Merge "Cleanup project's name in Sonar"
authorMichael Lando <ml636r@att.com>
Wed, 13 Sep 2017 18:02:10 +0000 (18:02 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 13 Sep 2017 18:02:10 +0000 (18:02 +0000)
294 files changed:
README.md
asdc-tests/pom.xml
asdctool/pom.xml
catalog-be/pom.xml
catalog-dao/pom.xml
catalog-model/pom.xml
catalog-ui/pom.xml
common-app-api/pom.xml
common/openecomp-common-configuration-management/openecomp-configuration-management-core/pom.xml
common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-core/src/main/java/org/openecomp/sdc/generator/aai/AaiArtifactGenerator.java
common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-test/dependency-reduced-pom.xml
common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/capabilities.yml
common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/data.yml
common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/nodes.yml
common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/relationships.yml
dox-sequence-diagram-ui/package.json
dox-sequence-diagram-ui/webpack.config.js
onboarding/pom.xml
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/pom.xml
openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/ComponentProcesses.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/OrchestrationTemplateCandidate.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/MapUploadFileResponseToUploadFileResponseDto.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/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapVersionedVendorSoftwareProductInfoToVspDetailsDto.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/MapVspDescriptionDtoToVspDetails.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/services/OrchestrationTemplateCandidateImpl.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/services/VendorSoftwareProductsImpl.java
openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/OnboardingMethod.java
openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/UploadFileResponseDto.java
openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/VspDescriptionDto.java
openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/VspDetailsDto.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/C36B4399FCB942B19D493F839CFA10E2_0_1_General_6E70545C4854465D82DBDB9BCBEF0FB5 [deleted file]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/OrchestrationTemplateCandidateManager.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/MonitoringUploadsManagerImpl.java
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImpl.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/impl/orchestration/BaseOrchestrationTemplateHandler.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateCSARHandler.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateFileHandler.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateZipHandler.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationUploadFactory.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationUtil.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/CSARConstants.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/OnboardingManifest.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationProcessFactory.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessCsarHandler.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessHandler.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessZipHandler.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/ConfigConstants.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/UploadFileResponse.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/main/resources/config-orchestration.json [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/resources/orchestrationConfiguration.json [new file with mode: 0644]
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/QuestionnaireDataServiceTest.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/OrchestrationTemplateCandidateManagerImplTest.java
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImplTest.java
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/tree/UploadFileTest.java
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/ManifestParsingTest.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/UploadCSARFileTest.java [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmock.csar [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockBrokenMF.csar [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail1.csar [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail2.csar [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail3.csar [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca1.mf [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca2.mf [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca3.mf [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca4.mf [new file with mode: 0644]
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidTosca.mf [new file with mode: 0644]
openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java
openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/utils/CommonUtil.java
openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/utils/SdcCommon.java
openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileUtils.java
openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/orchestration/OnboardingTypesEnum.java [new file with mode: 0644]
openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/pom.xml
openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/CompositionDataHealer.java
openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/FileDataStructureHealer.java
openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/HeatToToscaTranslationHealer.java
openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealer.java
openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealerTest.java [new file with mode: 0644]
openecomp-be/lib/openecomp-heat-lib/pom.xml
openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManager.java [new file with mode: 0644]
openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/messages/AuditMessages.java
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/external/artifact/MonitoringMibEnricher.java
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/AbstractSubstituteToscaEnricher.java
openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/java/org/openecomp/sdc/enrichment/impl/external/artifact/MonitoringMibEnricherTest.java
openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/pom.xml
openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/zusammen/ServiceModelDaoZusammenImpl.java
openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-api/pom.xml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-core/pom.xml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-impl/pom.xml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-orchestration-lib/pom.xml [new file with mode: 0644]
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/main/java/org/openecomp/sdc/translator/utils/ResourceWalker.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionNestedSingleComputeFullTest.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/catalogInstances/threeComputesSameTypeDiffImageName/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/catalogInstances/threeComputesSameTypeGetAttrBetweenThem/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/catalogInstances/threeComputesSameTypePortsConnectedToDiffNetworks/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/catalogInstances/twoNovaWithDiffProperties/out/GlobalSubstitutionTypesServiceTemplate.yaml
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/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/dependencyConnectivity/out/nested-pcm_v0.1ServiceTemplate.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/twoAppearancePerPatternWithConnectivities/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/GlobalSubstitutionTypesServiceTemplate.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/nested-pattern-4ServiceTemplate.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/GlobalSubstitutionTypesServiceTemplate.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/threeNestedLevelsDiffVmTypePattern1B/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/threeNestedLevelsSameVmTypePattern1B/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/twoNestedLevelsWithAllPatternsAndConnectivities/out/GlobalSubstitutionTypesServiceTemplate.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/nestedAllNonNestedPatterns/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/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedCatalogInstance/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedScalingInstance/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedSingleSubstitution1B/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedTwoSameFileOneDiff/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedTwoSameOneDiffWithConnectivity/out/GlobalSubstitutionTypesServiceTemplate.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/duplicateReqs/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/duplicateReqs/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/duplicateReqs/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/duplicateReqs/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/duplicateReqs/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/duplicateReqs/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/duplicateReqs/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/duplicateReqs/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/multipleReferencesToSameNestedFilesWithSameComputeType/out/GlobalSubstitutionTypesServiceTemplate.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/GlobalSubstitutionTypesServiceTemplate.yaml
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/nestedNodesConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.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/nestedOutputParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.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/GlobalSubstitutionTypesServiceTemplate.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/nestedWithTwoComputesOfSameType/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithTwoComputesOfSameType/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithTwoDiffComputeTypes/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedPointingToThreeDiffNestedFilesSameComputeType/out/GlobalSubstitutionTypesServiceTemplate.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/GlobalSubstitutionTypesServiceTemplate.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/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/NoOutParamDuplicatePortType/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/NoPorts/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/WithIndex/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/WithOutputParameters/consolidation/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/WithOutputParameters/noConsolidation/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/GlobalSubstitutionTypesServiceTemplate.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-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/noConsolidation/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/pattern4/oneNestedNode/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/pattern4/twoNestedWithOneCompute/out/GlobalSubstitutionTypesServiceTemplate.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-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/type/VspDetails.java
openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/filedatastructuremodule/CandidateService.java
openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/utils/CandidateEntityBuilder.java
openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.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/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/filedatastructuremodule/CandidateServiceImpl.java
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/pom.xml [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/ServiceTemplateReaderService.java [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/ToscaConverter.java [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/api/ToscaConverterManager.java [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/datatypes/Constants.java [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/datatypes/CsarFileTypes.java [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/factory/ToscaConverterFactory.java [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/resources/factoryConfiguration.json [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/pom.xml [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/GlobalSubstitutionServiceTemplate.java [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterImpl.java [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterManagerImpl.java [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/factory/ToscaConverterFactoryImpl.java [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/services/ServiceTemplateReaderServiceImpl.java [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/resources/ToscaConverters.json [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConverterImplTest.java [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConvertorDefinitionsTest.java [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/csar/vCSCF.csar [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Artifacts/checksum.lst [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Artifacts/csar.meta [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Definitions/GlobalSubstitutionTypesServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/MainServiceTemplate.mf [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/MainServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/TOSCA-Metadata/TOSCA.meta [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/out/MainServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-converter-lib/pom.xml [new file with mode: 0644]
openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/datatypes/ToscaServiceModel.java
openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImpl.java
openecomp-be/lib/pom.xml
openecomp-be/pom.xml
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/resources/scss/modules/_softwareProductLandingPage.scss
openecomp-ui/src/nfvo-components/SubmitErrorResponse.jsx
openecomp-ui/src/nfvo-utils/i18n/i18n.js
openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js
openecomp-ui/src/sdc-app/onboarding/OnboardingPunchOut.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductReducer.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js [new file with mode: 0644]
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsReducer.js [new file with mode: 0644]
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationReducer.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx
openecomp-ui/test/softwareProduct/attachments/SoftwareProductAttachmentsView.test.js
sdc-os-chef/pom.xml
sdc-os-chef/sdc-backend/Dockerfile
sdc-os-chef/sdc-cassandra/Dockerfile
sdc-os-chef/sdc-elasticsearch/Dockerfile
sdc-os-chef/sdc-frontend/Dockerfile
sdc-os-chef/sdc-kibana/Dockerfile
sdc-os-chef/sdc-sanity/Dockerfile
security-utils/pom.xml
test-apis-ci/pom.xml
ui-ci/pom.xml
utils/webseal-simulator/README.md [moved from utils/webseal-simulator/readme.md with 100% similarity]

index 297457a..320b100 100644 (file)
--- a/README.md
+++ b/README.md
@@ -69,16 +69,65 @@ Define in your hosts file the following:
 <ip address of Ecomp portal URL> portal.api.simpledemo.openecomp.org
 Open browser and navigate to: http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/login.htm
 
-### Webseal simulator
+### Webseal/SDC simulator
 This options is for developers to run locally SDC
+
+# SDC Simulator
+
+This options is for developers to run locally SDC
+SDC Simulator is a project that enables emulation of web server that provides security policy and sign-on to the SDC component in dev environments.
+
+  - Provides sign on to the basic user roles/functionalities
+  - Creation of basic user accounts
+
+# Docker compilation - Docker Maven Build Profile (io.fabric8 maven Plugin)
+
+If you are using onap vagrant you can deploy the simulator by:
+
+Set up the DOCKER_HOST environmental variable
+
+To set environmental variable in Windows (the docker engine environment):
+- Run `cmd`
+-- Issue command `set NAME=VAL
+Example: set DOCKER_HOST=tcp://127.0.0.1:2375
+--To check if the variable set succeeded issue `echo %DOCKER_HOST%`
+
+- To compile sdc-simulator docker:
+1. Run `mvn clean install -Ddocker.buildArg.http_proxy=<http_proxy> -Ddocker.buildArg.https_proxy=<https_proxy> -P docker`
+-- The proxy arguments are passed and used as environmental variables in Dockerfiles 
+2. Copy the script /webseal-simulator/scripts/simulator_docker_run.sh to the docker engine environment and run:
+`simulator_docker_run.sh -r 1.1-STAGING-latest`
+3. Run `docker ps` to verify that sdc-simulator docker is up and running.
+4. Enter to UI: `http://<ip address>:8285/login`
+
+# Docker compilation - Docker Engine
+
+1. Build web simulator WAR file: run `mvn clean install` on project Ã¢â‚¬Å“webseal simulator�. This will generate war file (WSSimulator.war) in the target folder.
+2. Ftp war file: webseal-simulator/sdc-simulator folder to your localhost vagrant machine which runs docker engine daemon.
+-- Check that WSSimulator.war exists after first step No.1 in webseal-simulator/sdc-simulator folder.
+3. Run `docker build -t openecomp/sdc-simulator:1.1-STAGING-latest <PATH/sdc-simulator>`
+Example: docker build -t openecomp/sdc-simulator:1.1-STAGING-latest /tmp/docker/sdc-simulator/
+-- If running behind a proxy:
+`docker build --build-arg http_proxy=http://URL:PORT --build-arg https_proxy=http://URL:PORT -t openecomp/sdc-simulator:1.1-STAGING-latest /tmp/docker/sdc-simulator/`
+4. Validate that images pushed to the local repo by executing `docker images`
+5. Copy the script /webseal-simulator/scripts/simulator_docker_run.sh to the docker engine environment and run: `simulator_docker_run.sh -r 1.1-STAGING-latest`
+6. Run `docker ps` to verify that sdc-simulator docker is up and running.
+7. Enter to UI: `http://<ip address>:8285/login`
+
+# WAR compilation
+
+  - To compile WSSimulator.war:
 1. Build web simulator WAR file: run `mvn clean install` on project "webseal simulator". This will generate war file (WSSimulator.war) in the target folder.
-2. Copy the war to: /home/vagrant/webseal-simulator/webapps
-3. Add users to simulator: open configuration file - /home/vagrant/webseal-simulator/config/webseal.conf and add new user to the user list.
+2. Ftp war file: webseal-simulator\target\WSSimulator.war to your localhost vagrant machine: /home/vagrant/webseal-simulator/webapps folder
+3. Ftp configuration file: webseal-simulator\src\main\resources\webseal.conf to your localhost vagrant machine: /home/vagrant/webseal-simulator/config
+4. Add users to simulator: open configuration file - webseal.conf and add new user to the user list.
    Note: You need to define the user in the SDC as well.
-4. Restart the simulator:
+5. To run the simulator, enter to your local vagrant and run: startWebsealSimulator.sh
+-- Restart the simulator:
    Stop the simulator: stopWebsealSimulator.sh
    Start the simulator: startWebsealSimulator.sh
-5. Enter to UI: http://<ip address>:8285/sdc1/login
+6. Enter to UI: http://<ip address>:8285/login
+
 
 ### SDC import normatives from CLI
 SDC needs to work with predefined basic normatives, in order to update the database with the normatives need to:
index 7e74762..266ad36 100644 (file)
                </dependency>
 
                <dependency>
-                       <groupId>com.thinkaurelius.titan</groupId>
-                       <artifactId>titan-cassandra</artifactId>
+                       <groupId>org.openecomp.sdc.sdc-titan-cassandra</groupId>
+                       <artifactId>sdc-titan-cassandra</artifactId>
                        <version>${titan.version}</version>
                        <scope>compile</scope>
                        <exclusions>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-assembly-plugin</artifactId>
-                               <version>2.5.5</version>
                                <executions>
                                        <execution>
                                                <id>create.jar.with.dependencies</id>
index 88031c8..410e852 100644 (file)
                </dependency>
 
                <dependency>
-                       <groupId>com.thinkaurelius.titan</groupId>
-                       <artifactId>titan-cassandra</artifactId>
+                       <groupId>org.openecomp.sdc.sdc-titan-cassandra</groupId>
+                       <artifactId>sdc-titan-cassandra</artifactId>
                        <version>${titan.version}</version>
                        <scope>compile</scope>
                        <exclusions>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-assembly-plugin</artifactId>
-                               <version>2.6</version>
                                <executions>
                                        <execution>
                                                <id>create.jar.with.dependencies</id>
index 870bf09..8b638e8 100644 (file)
                </dependency>
 
                <dependency>
-                       <groupId>com.thinkaurelius.titan</groupId>
-                       <artifactId>titan-cassandra</artifactId>
-                       <!--<artifactId>asdc-titan-cassandra</artifactId>-->
+                       <groupId>org.openecomp.sdc.sdc-titan-cassandra</groupId>
+                       <artifactId>sdc-titan-cassandra</artifactId>
                        <version>${titan.version}</version>
                        <scope>compile</scope>
                        <exclusions>
                                                </configuration>
                                        </execution>
                                        
-                                       <execution>
-                                               <id>copy-static-configuration-files</id>
-                                               <phase>install</phase>
-                                               <goals>
-                                                       <goal>copy-resources</goal>
-                                               </goals>
-                                               <configuration>
-                                                       <outputDirectory>${project.parent.basedir}/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/files/default</outputDirectory>
-                                                       <resources>
-                                                               <resource>
-                                                                       <directory>${project.parent.basedir}/catalog-be/src/main/resources/config</directory>
-                                                                       <includes>
-                                                                               <include>Artifact-Generator.properties</include>
-                                                                               <include>error-configuration.yaml</include>
-                                                                               <include>ecomp-error-configuration.yaml</include>
-                                                                               <include>logback.xml</include>
-                                                                       </includes>
-                                                               </resource>
-                                                       </resources>
-                                               </configuration>
-                                       </execution>
-                                       
                                <execution>
                                <id>copy-tosca-folder</id>
                                <!-- here the phase you need -->
                                                                        <directory>${project.parent.basedir}/asdctool/tosca</directory>
                                                                        <followSymlinks>false</followSymlinks>
                                                                </fileset>
-                                                               <!-- static configuration files -->
-                                                               <fileset>       
-                                                               <directory>${project.parent.basedir}/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/files/default</directory>
-                                                               <includes>
-                                                                               <include>Artifact-Generator.properties</include>
-                                                                               <include>error-configuration.yaml</include>
-                                                                               <include>ecomp-error-configuration.yaml</include>
-                                                                               <include>logback.xml</include>
-                                                                       </includes>
-                                                       </fileset>
                                                        </filesets>
                                                </configuration>
                                        </execution>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-assembly-plugin</artifactId>
-                               <version>2.6</version>
                                <executions>
                                        <execution>
                                                <id>normatives</id>
index 2627899..d3c255a 100644 (file)
                </dependency>
 
                <dependency>
-                       <groupId>com.thinkaurelius.titan</groupId>
-                        <artifactId>titan-cassandra</artifactId>
-                       <!--<artifactId>asdc-titan-cassandra</artifactId>-->
+                       <groupId>org.openecomp.sdc.sdc-titan-cassandra</groupId>
+                       <artifactId>sdc-titan-cassandra</artifactId>
                        <version>${titan.version}</version>
                        <scope>provided</scope>
                        <exclusions>
index 444686d..3752d79 100644 (file)
                </dependency>
 
                <dependency>
-                       <groupId>com.thinkaurelius.titan</groupId>
-                       <artifactId>titan-cassandra</artifactId>
+                       <groupId>org.openecomp.sdc.sdc-titan-cassandra</groupId>
+                       <artifactId>sdc-titan-cassandra</artifactId>
                        <version>${titan.version}</version>
                        <scope>provided</scope>
                        <exclusions>
index 80d534c..8d93c4b 100644 (file)
@@ -3,7 +3,6 @@
 
        <modelVersion>4.0.0</modelVersion>
 
-       <groupId>org.openecomp.sdc</groupId>
        <artifactId>catalog-ui</artifactId>
     <packaging>pom</packaging>
 
index 70ddd5c..d7e3f5b 100644 (file)
@@ -3,7 +3,6 @@
 
        <modelVersion>4.0.0</modelVersion>
 
-       <groupId>org.openecomp.sdc</groupId>
        <artifactId>common-app-api</artifactId>
 
        <parent>
index 609e8ab..186a508 100644 (file)
             <artifactId>jackson-dataformat-yaml</artifactId>
             <version>${jackson.version}</version>
         </dependency>
-        <dependency> 
+        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-configuration2</artifactId>
             <version>2.1</version>
         </dependency>
-        <dependency> 
+        <dependency>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
             <version>1.2</version>
         </dependency>
-        <dependency> 
+        <dependency>
             <groupId>commons-beanutils</groupId>
             <artifactId>commons-beanutils</artifactId>
             <version>${commons.beanutils.version}</version>
         </dependency>
-        <dependency> 
+        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
             <version>3.3.2</version>
         </dependency>
-        <dependency> 
+        <dependency>
             <groupId>com.github.adejanovski</groupId>
             <artifactId>cassandra-jdbc-wrapper</artifactId>
             <version>${cassandra.version}</version>
         </dependency>
-        <dependency> 
+        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-dbcp2</artifactId>
             <version>2.0</version>
         </dependency>
-        <dependency> 
+        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-pool2</artifactId>
             <version>2.4.2</version>
         </dependency>
-        <dependency> 
+        <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
             <version>${commons.io.version}</version>
         </dependency>
-        <dependency> 
+        <dependency>
             <groupId>net.sf.corn</groupId>
             <artifactId>corn-cps</artifactId>
             <version>1.1.7</version>
             <exclusions>
-                       <exclusion>  
-                         <groupId>com.sun</groupId>
-                         <artifactId>tools</artifactId>
-                       </exclusion>
-             </exclusions> 
+                <exclusion>
+                    <groupId>com.sun</groupId>
+                    <artifactId>tools</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
-                   <groupId>com.virtlink.commons</groupId>
-                   <artifactId>commons-configuration2-jackson</artifactId>
-                   <version>0.6.1</version>
-               </dependency>
+            <groupId>com.virtlink.commons</groupId>
+            <artifactId>commons-configuration2-jackson</artifactId>
+            <version>0.6.1</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-core</artifactId>
             <artifactId>slf4j-log4j12</artifactId>
             <version>${slf4j.version}</version>
         </dependency>
-               <dependency>
-                   <groupId>org.slf4j</groupId>
-                   <artifactId>slf4j-ext</artifactId>
-                   <version>${slf4j.version}</version>
-               </dependency>
         <dependency>
-                   <groupId>org.openecomp.sdc.common</groupId>
-                   <artifactId>openecomp-configuration-management-api</artifactId>
-                   <version>1.1.0-SNAPSHOT</version>
-               </dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-ext</artifactId>
+            <version>${slf4j.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc.common</groupId>
+            <artifactId>openecomp-configuration-management-api</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
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 a71fe7f..5a51961 100644 (file)
@@ -7,7 +7,6 @@
     <relativePath>../../pom.xml</relativePath>\r
   </parent>\r
   <modelVersion>4.0.0</modelVersion>\r
-  <groupId>org.openecomp.sdc.common</groupId>\r
   <artifactId>openecomp-sdc-artifact-generator-test</artifactId>\r
   <build>\r
     <plugins>\r
index 77d8eb9..e395e3f 100644 (file)
@@ -98,3 +98,53 @@ capability_types:
         description: Runtime monitored value
         type: string
         status: SUPPORTED
+
+  tosca.capabilities.nfv.VirtualLinkable:
+    derived_from: tosca.capabilities.Root
+
+  tosca.capabilities.nfv.Metric:
+    derived_from: tosca.capabilities.Root
+
+  tosca.capabilities.nfv.VirtualBindable:
+    derived_from: tosca.capabilities.Root
+
+  tosca.capabilities.nfv.VirtualCompute:
+    derived_from: tosca.capabilities.Root
+    properties:
+      virtual_memory:
+        type: tosca.datatypes.nfv.VirtualMemory
+      requested_additional_capabilities:
+        entry_schema:
+          type: tosca.datatypes.nfv.RequestedAdditionalCapability
+        required: false
+        type: map
+      virtual_cpu:
+        type: tosca.datatypes.nfv.VirtualCpu
+
+
+  tosca.capabilities.nfv.VirtualStorage:
+    derived_from: tosca.capabilities.Root
+
+  tosca.capabilities.nfv.Forwarder:
+    derived_from: tosca.capabilities.Root
+
+  tosca.capabilities.nfv.ext.Compute.Container.Architecture:
+    derived_from: tosca.capabilities.Root
+    properties:
+      num_cpus:
+        required: false
+        type: string
+      flavor_extra_specs:
+        entry_schema:
+          type: string
+        required: false
+        type: map
+      mem_size:
+        required: false
+        type: string
+
+  tosca.capabilities.nfv.ext.ImageFile:
+    derived_from: tosca.capabilities.Root
+
+  tosca.capabilities.nfv.ext.LocalAttachment:
+    derived_from: tosca.capabilities.Root
\ No newline at end of file
index c7ce3c1..85ff50c 100644 (file)
@@ -554,4 +554,225 @@ data_types:
         description: Hash type
         required: false
         default: md5
-        
+
+  tosca.datatypes.nfv.RequestedAdditionalCapability:
+    derived_from: tosca.datatypes.Root
+    properties:
+      support_mandatory:
+        type: boolean
+        required: true
+      min_requested_additional_capability_version:
+        type: string
+        required: false
+      preferred_requested_additional_capability_version:
+        type: string
+        required: false
+      requested_additional_capability_name:
+        type: string
+        required: true
+      target_performance_parameters:
+        type: map
+        entry_schema:
+          type: string
+        required: true
+  tosca.datatypes.nfv.VirtualMemory:
+    derived_from: tosca.datatypes.Root
+    properties:
+      virtual_mem_size:
+        type: string
+        required: true
+      virtual_mem_oversubscription_policy:
+        type: string
+        required: false
+      numa_enabled:
+        type: boolean
+        required: false
+  tosca.datatypes.nfv.VirtualCpu:
+    derived_from: tosca.datatypes.Root
+    properties:
+      cpu_architecture:
+        type: string
+        required: false
+      num_virtual_cpu:
+        type: integer
+        required: true
+      virtual_cpu_clock:
+        type: scalar-unit.frequency
+        required: false
+      virtual_cpu_oversubscription_policy:
+        type: string
+        required: false
+      virtual_cpu_pinning:
+        type: tosca.datatypes.nfv.VirtualCpuPinning
+        required: false
+  tosca.datatypes.nfv.VirtualCpuPinning:
+    derived_from: tosca.datatypes.Root
+    properties:
+      cpu_pinning_policy:
+        type: string
+        constraints:
+          - valid_values: [ static, dynamic ]
+        required: false
+      cpu_pinning_map:
+        type: map
+        entry_schema:
+          type: string
+        required: false
+  tosca.datatypes.nfv.VnfcConfigurableProperties:
+    properties:
+      additional_vnfc_configurable_properties:
+        entry_schema:
+          type: string
+        required: false
+        type: map
+  tosca.datatypes.network.NetworkInfo:
+    properties:
+      network_id:
+        required: false
+        type: string
+      addresses:
+        entry_schema:
+          type: string
+        required: false
+        type: list
+      network_name:
+        required: false
+        type: string
+  tosca.datatypes.network.PortInfo:
+    properties:
+      port_name:
+        required: false
+        type: string
+      network_id:
+        required: false
+        type: string
+      addresses:
+        entry_schema:
+          type: string
+        required: false
+        type: list
+      mac_address:
+        required: false
+        type: string
+      port_id:
+        required: false
+        type: string
+  tosca.datatypes.nfv.L3AddressData:
+    properties:
+      number_of_ip_address:
+        required: false
+        type: integer
+      ip_address_assignment:
+        type: boolean
+      ip_address_type:
+        constraints:
+        - valid_values:
+          - ipv4
+          - ipv6
+        required: false
+        type: string
+      floating_ip_activated:
+        type: string
+  tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements:
+    properties:
+      name:
+        required: false
+        type: string
+      support_mandatory:
+        type: boolean
+      description:
+        required: false
+        type: string
+      requirement:
+        entry_schema:
+          type: string
+        type: map
+  tosca.datatype.nfv.AddressData:
+    properties:
+      address_type:
+        constraints:
+        - valid_values:
+          - mac_address
+          - ip_address
+        type: string
+      l2_address_data:
+        required: false
+        type: tosca.datatypes.nfv.L2AddressData
+      l3_address_data:
+        required: false
+        type: tosca.datatypes.nfv.L3AddressData
+  tosca.datatypes.nfv.L2AddressData: {}
+  tosca.datatypes.nfv.ConnectivityType:
+    properties:
+      layer_protocol:
+        constraints:
+        - valid_values:
+          - ethernet
+          - mpls
+          - odu2
+          - ipv4
+          - ipv6
+          - pseudo_wire
+        type: string
+      flow_pattern:
+        required: false
+        type: string
+  tosca.datatypes.nfv.ext.FloatingIP:
+    properties:
+      external_network:
+        required: false
+        type: string
+      ip_address:
+        required: false
+        type: string
+  tosca.datatypes.nfv.ext.AddressPairs:
+    properties:
+      ip:
+        required: false
+        type: string
+      mac:
+        required: false
+        type: string
+  tosca.datatypes.nfv.ext.InjectData:
+    properties:
+      file_name:
+        required: false
+        type: string
+      file_data:
+        required: false
+        type: string
+  tosca.datatypes.nfv.ext.zte.WatchDog:
+    properties:
+      enable_delay:
+        required: false
+        type: integer
+      action:
+        required: false
+        type: string
+  tosca.datatypes.nfv.ext.LocalAffinityOrAntiAffinityRule:
+    properties:
+      scope:
+        required: false
+        type: string
+      affinity_antiaffinity:
+        required: false
+        type: string
+  tosca.datatypes.nfv.ext.LocationInfo:
+    properties:
+      availability_zone:
+        required: false
+        type: string
+      vimid:
+        required: false
+        type: integer
+      tenant:
+        required: false
+        type: string
+  tosca.datatypes.nfv.ext.HostRouteInfo:
+    properties:
+      destination:
+        required: false
+        type: string
+      nexthop:
+        required: false
+        type: string
\ No newline at end of file
index fb2e030..aaff11b 100644 (file)
@@ -569,4 +569,538 @@ node_types:
         type: map
         entry_schema:
           type: org.openecomp.datatypes.ImageInfo
-        required: false
\ No newline at end of file
+        required: false
+  tosca.nodes.nfv.NS.vEPC_NS:
+    derived_from: tosca.nodes.nfv.NS
+    properties:
+      vendor:
+        default: ChinaMobile
+        required: false
+        type: string
+      csarVersion:
+        default: v1.0
+        required: false
+        type: string
+      name:
+        default: vEPC_NS
+        required: false
+        type: string
+      csarProvider:
+        default: ChinaMobile
+        required: false
+        type: string
+      id:
+        default: vEPC_NS
+        required: false
+        type: string
+      version:
+        default: v1.0
+        required: false
+        type: string
+      csarType:
+        default: NSAR
+        required: false
+        type: string
+    requirements:
+    - virtualLink:
+        capability: tosca.capabilities.nfv.VirtualLinkable
+        occurrences:
+        - 0
+        - UNBOUNDED
+
+  tosca.nodes.nfv.NS.vIMS_NS:
+    derived_from: tosca.nodes.nfv.NS
+    properties:
+      vendor:
+        default: ChinaMobile
+        required: false
+        type: string
+      csarVersion:
+        default: v1.0
+        required: false
+        type: string
+      name:
+        default: vIMS_NS
+        required: false
+        type: string
+      csarProvider:
+        default: ChinaMobile
+        required: false
+        type: string
+      id:
+        default: vIMS_NS
+        required: false
+        type: string
+      version:
+        default: v1.0
+        required: false
+        type: string
+      csarType:
+        default: NSAR
+        required: false
+        type: string
+    requirements:
+    - virtualLink:
+        capability: tosca.capabilities.nfv.VirtualLinkable
+        occurrences:
+        - 0
+        - UNBOUNDED
+
+  tosca.nodes.nfv.NS:
+    derived_from: tosca.nodes.Root
+    properties:
+      vendor:
+        required: false
+        type: string
+      name:
+        required: false
+        type: string
+      id:
+        required: false
+        type: string
+      version:
+        required: false
+        type: string
+    requirements:
+    - virtualLink:
+        capability: tosca.capabilities.nfv.VirtualLinkable
+        occurrences:
+        - 0
+        - UNBOUNDED
+
+  tosca.nodes.nfv.VDU.Compute:
+    attributes:
+      private_address:
+        type: string
+      public_address:
+        type: string
+      networks:
+        type: string
+      ports:
+        type: string
+    capabilities:
+      scalable:
+        type: tosca.capabilities.Scalable
+      virtual_compute:
+        type: tosca.capabilities.nfv.VirtualCompute
+      endpoint:
+        type: tosca.capabilities.Endpoint.Admin
+      os:
+        type: tosca.capabilities.OperatingSystem
+      virtual_binding:
+        type: tosca.capabilities.nfv.VirtualBindable
+      host:
+        type: tosca.capabilities.Container
+      binding:
+        type: tosca.capabilities.network.Bindable
+      monitoring_parameter:
+        type: tosca.capabilities.nfv.Metric
+    derived_from: tosca.nodes.Root
+    properties:
+      configurable_properties:
+        entry_schema:
+          type: tosca.datatypes.nfv.VnfcConfigurableProperties
+        type: map
+      name:
+        type: string
+      nfvi_constraints:
+        entry_schema:
+          type: string
+        required: false
+        type: list
+      descrption:
+        type: string
+      boot_order:
+        entry_schema:
+          type: string
+        required: false
+        type: list
+    requirements:
+    - local_storage:
+        capability: tosca.capabilities.Attachment
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - virtual_storage:
+        capability: tosca.capabilities.nfv.VirtualStorage
+        occurrences:
+        - 0
+        - UNBOUNDED
+
+  tosca.nodes.nfv.VDU.VirtualStorage:
+    capabilities:
+      virtual_storage:
+        type: tosca.capabilities.nfv.VirtualStorage
+    derived_from: tosca.nodes.Root
+    properties:
+      id:
+        type: string
+      size_of_storage:
+        type: string
+      rdma_enabled:
+        required: false
+        type: boolean
+      type_of_storage:
+        type: string
+
+  tosca.nodes.nfv.VduCpd:
+    derived_from: tosca.nodes.Root
+    properties:
+      virtual_network_interface_requirements:
+        entry_schema:
+          type: tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements
+        required: false
+        type: list
+      role:
+        constraints:
+        - valid_values:
+          - root
+          - leaf
+        required: false
+        type: string
+      bitrate_requirement:
+        required: false
+        type: integer
+      description:
+        required: false
+        type: string
+      layer_protocol:
+        constraints:
+        - valid_values:
+          - ethernet
+          - mpls
+          - odu2
+          - ipv4
+          - ipv6
+          - pseudo_wire
+        type: string
+      address_data:
+        entry_schema:
+          type: tosca.datatype.nfv.AddressData
+        required: false
+        type: list
+    requirements:
+    - virtual_binding:
+        capability: tosca.capabilities.nfv.VirtualBindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - virtual_link:
+        capability: tosca.capabilities.nfv.VirtualBindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+  tosca.nodes.nfv.ext.ImageFile:
+    capabilities:
+      guest_os:
+        type: tosca.capabilities.nfv.ext.GuestOs
+      image_fle:
+        type: tosca.capabilities.nfv.ext.ImageFile
+    derived_from: tosca.nodes.Root
+    properties:
+      file_url:
+        required: false
+        type: string
+      container_type:
+        required: false
+        type: string
+      name:
+        required: false
+        type: string
+      disk_format:
+        required: false
+        type: string
+      version:
+        required: false
+        type: string
+  tosca.nodes.nfv.ext.LocalStorage:
+    capabilities:
+      local_attachment:
+        type: tosca.capabilities.nfv.ext.LocalAttachment
+    derived_from: tosca.nodes.Root
+    properties:
+      size:
+        required: false
+        type: string
+      disk_type:
+        required: false
+        type: string
+  tosca.nodes.nfv.ext.zte.CP:
+    capabilities:
+      forwarder:
+        type: tosca.capabilities.nfv.Forwarder
+    derived_from: tosca.nodes.Root
+    properties:
+      guest_os_mtu:
+        required: false
+        type: integer
+      bandwidth:
+        required: false
+        type: integer
+      interface_name:
+        required: false
+        type: string
+      allowed_address_pairs:
+        entry_schema:
+          type: tosca.datatypes.nfv.ext.AddressPairs
+        required: false
+        type: list
+      ip_address:
+        required: false
+        type: string
+      bond:
+        required: false
+        type: string
+      proxiedVNFs:
+        entry_schema:
+          type: string
+        required: false
+        type: list
+      sfc_encapsulation:
+        required: false
+        type: string
+      floating_ip_address:
+        required: false
+        type: tosca.datatypes.nfv.ext.FloatingIP
+      service_ip_address:
+        required: false
+        type: string
+      mac_address:
+        required: false
+        type: string
+      proxiedVNFtype:
+        required: false
+        type: string
+      macbond:
+        required: false
+        type: string
+      vnic_type:
+        required: false
+        type: string
+      direction:
+        required: false
+        type: string
+      order:
+        required: false
+        type: integer
+    requirements:
+    - forwarder:
+        capability: tosca.capabilities.nfv.Forwarder
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - virtualbinding:
+        capability: tosca.capabilities.nfv.VirtualBindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - virtualLink:
+        capability: tosca.capabilities.nfv.VirtualBindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+  tosca.nodes.nfv.ext.zte.VDU:
+    capabilities:
+      scalable:
+        type: tosca.capabilities.Scalable
+      monitoring_parameter:
+        type: tosca.capabilities.nfv.Metric
+      nfv_compute:
+        type: tosca.capabilities.nfv.ext.Compute.Container.Architecture
+      virtualbinding:
+        type: tosca.capabilities.nfv.VirtualBindable
+    derived_from: tosca.nodes.Root
+    properties:
+      manual_scale_select_vim:
+        required: false
+        type: boolean
+      vdu_type:
+        required: false
+        type: string
+      watchdog:
+        required: false
+        type: tosca.datatypes.nfv.ext.zte.WatchDog
+      name:
+        required: false
+        type: string
+      local_affinity_antiaffinity_rule:
+        required: false
+        type: tosca.datatypes.nfv.ext.LocalAffinityOrAntiAffinityRule
+      support_scaling:
+        required: false
+        type: boolean
+      storage_policy:
+        required: false
+        type: string
+      key_vdu:
+        required: false
+        type: boolean
+      location_info:
+        required: false
+        type: tosca.datatypes.nfv.ext.LocationInfo
+      inject_data_list:
+        entry_schema:
+          type: tosca.datatypes.nfv.ext.InjectData
+        required: false
+        type: list
+    requirements:
+    - guest_os:
+        capability: tosca.capabilities.nfv.ext.GuestOs
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage:
+        capability: tosca.capabilities.nfv.ext.LocalAttachment
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - volume_storage:
+        capability: tosca.capabilities.Attachment
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency:
+        capability: tosca.capabilities.Node
+        occurrences:
+        - 0
+        - UNBOUNDED
+  tosca.nodes.nfv.ext.zte.VL:
+    capabilities:
+      virtual_linkable:
+        type: tosca.capabilities.nfv.VirtualLinkable
+    derived_from: tosca.nodes.Root
+    properties:
+      segmentation_id:
+        required: false
+        type: string
+      network_name:
+        required: false
+        type: string
+      is_predefined:
+        required: false
+        type: boolean
+      mtu:
+        required: false
+        type: integer
+      dns_nameservers:
+        entry_schema:
+          type: string
+        required: false
+        type: list
+      physical_network:
+        required: false
+        type: string
+      dhcp_enabled:
+        required: false
+        type: boolean
+      network_id:
+        required: false
+        type: string
+      host_routes:
+        entry_schema:
+          type: tosca.datatypes.nfv.ext.HostRouteInfo
+        required: false
+        type: list
+      ip_version:
+        required: false
+        type: integer
+      vendor:
+        required: false
+        type: string
+      name:
+        required: false
+        type: string
+      start_ip:
+        required: false
+        type: string
+      vlan_transparent:
+        required: false
+        type: boolean
+      cidr:
+        required: false
+        type: string
+      gateway_ip:
+        required: false
+        type: string
+      network_type:
+        required: false
+        type: string
+      end_ip:
+        required: false
+        type: string
+      location_info:
+        required: false
+        type: tosca.datatypes.nfv.ext.LocationInfo
+  tosca.nodes.nfv.ext.zte.VNF:
+    capabilities:
+      forwarder:
+        type: tosca.capabilities.nfv.Forwarder
+    derived_from: tosca.nodes.Root
+    properties:
+      request_reclassification:
+        required: false
+        type: boolean
+      domain_type:
+        required: false
+        type: string
+      nsh_aware:
+        required: false
+        type: boolean
+      plugin_info:
+        required: false
+        type: string
+      adjust_vnf_capacity:
+        required: false
+        type: boolean
+      vnfd_version:
+        required: false
+        type: string
+      vmnumber_overquota_alarm:
+        required: false
+        type: boolean
+      custom_properties:
+        entry_schema:
+          type: string
+        required: false
+        type: map
+      version:
+        required: false
+        type: string
+      cross_dc:
+        required: false
+        type: boolean
+      script_info:
+        required: false
+        type: string
+      vendor:
+        required: false
+        type: string
+      is_shared:
+        required: false
+        type: boolean
+      name:
+        required: false
+        type: string
+      vnf_extend_type:
+        required: false
+        type: string
+      id:
+        required: false
+        type: string
+      vnf_type:
+        required: false
+        type: string
+      is_sfc_proxy:
+        required: false
+        type: boolean
+    requirements:
+    - forwarder:
+        capability: tosca.capabilities.nfv.Forwarder
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - virtualLink:
+        capability: tosca.capabilities.nfv.VirtualLinkable
+        occurrences:
+        - 0
+        - UNBOUNDED
\ No newline at end of file
index 6243cfa..220658a 100644 (file)
@@ -54,3 +54,15 @@ relationship_types:
         status: SUPPORTED
         required: false
         
+  tosca.relationships.nfv.VDU.AttachedTo:
+    derived_from: tosca.relationships.Root
+    properties:
+      location:
+        required: false
+        type: string
+
+  tosca.relationships.nfv.VirtualBindsTo:
+    derived_from: tosca.relationships.Root
+
+  tosca.relationships.nfv.VirtualLinksTo:
+    derived_from: tosca.relationships.Root
\ No newline at end of file
index 81d42af..17f4efa 100644 (file)
   "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",
     "react-dnd-html5-backend": "^2.1.2",
     "react-dom": "^15.1.0",
     "react-redux": "^4.4.5",
-    "react-select": "^1.0.0-beta13",
+    "react-select": "1.0.0-rc.5",
     "redux": "^3.5.2"
   },
   "devDependencies": {
@@ -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 7b7f4b9..94850ec 100644 (file)
@@ -28,7 +28,7 @@ var config = {
        },
        eslint: {
                failOnWarning: false,
-               failOnError: true,
+               failOnError: false,
                configFile: 'eslintrc.json'
        },
        devtool: 'eval-source-map',
index 36a36ee..141ffc0 100644 (file)
@@ -20,6 +20,7 @@
 
     <properties>
         <!-- Maven plugin versions -->
+        <jacoco.version>0.7.9</jacoco.version>
         <mvn.assembly.version>2.1</mvn.assembly.version>
         <mvn.compiler.version>2.5.1</mvn.compiler.version>
         <mvn.deploy.version>2.4</mvn.deploy.version>
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 f146881..d65e9e6 100644 (file)
             <artifactId>woodstox-core-asl</artifactId>
             <version>${woodstox.version}</version>
         </dependency>
-        <dependency>
+        <!--dependency>
             <groupId>org.openecomp.sdc</groupId>
             <artifactId>openecomp-sdc-vendor-software-product-manager</artifactId>
             <version>${project.version}</version>
-        </dependency>
+        </dependency-->
         <dependency>
             <groupId>com.sun.jersey.contribs</groupId>
             <artifactId>jersey-multipart</artifactId>
index ca50ef1..edb3b5b 100644 (file)
 
 package org.openecomp.sdcrests.vsp.rest;
 
-import static org.openecomp.sdcrests.common.RestConstants.USER_ID_HEADER_PARAM;
-import static org.openecomp.sdcrests.common.RestConstants.USER_MISSING_ERROR_MSG;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.cxf.jaxrs.ext.multipart.Multipart;
-import org.openecomp.sdc.versioning.dao.types.Version;
 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ProcessEntityDto;
 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ProcessRequestDto;
 import org.springframework.validation.annotation.Validated;
 
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
+import javax.ws.rs.*;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
+import static org.openecomp.sdcrests.common.RestConstants.USER_ID_HEADER_PARAM;
+import static org.openecomp.sdcrests.common.RestConstants.USER_MISSING_ERROR_MSG;
+
 @Path("/v1.0/vendor-software-products/{vspId}/versions/{versionId}/components/{componentId}/processes")
 @Produces(MediaType.APPLICATION_JSON)
 @Consumes(MediaType.APPLICATION_JSON)
index fbf2918..fa7f421 100644 (file)
@@ -23,6 +23,7 @@ package org.openecomp.sdcrests.vsp.rest;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.cxf.jaxrs.ext.multipart.Multipart;
 import org.openecomp.sdc.vendorsoftwareproduct.types.FileDataStructureDto;
 import org.openecomp.sdcrests.vendorsoftwareproducts.types.UploadFileResponseDto;
@@ -61,7 +62,7 @@ public interface OrchestrationTemplateCandidate extends VspEntities {
   Response upload(
       @PathParam("vspId") String vspId,
       @ApiParam(value = "Version Id") @PathParam("versionId") String versionId,
-      @Multipart("upload") InputStream heatFileToUpload,
+      @Multipart("upload") Attachment fileToUpload,
       @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(USER_ID_HEADER_PARAM) String user);
 
   @GET
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 9093da5..815135f 100644 (file)
@@ -45,8 +45,10 @@ public class MapVersionedVendorSoftwareProductInfoToVspDetailsDto
     target.setSubCategory(vsp.getSubCategory());
     target.setVendorId(vsp.getVendorId());
     target.setVendorName(vsp.getVendorName());
+    target.setOnboardingOrigin(vsp.getOnboardingOrigin());
     target.setLicensingVersion(vsp.getVlmVersion() == null ? null : new VersionDto(vsp.getVlmVersion().toString(), vsp.getVlmVersion().toString()));
     target.setIsOldVersion("False");
+    target.setNetworkPackageName(vsp.getNetworkPackageName());
 
     if (vsp.getLicenseAgreement() != null || vsp.getFeatureGroups() != null) {
       LicensingData licensingData = new LicensingData();
index 9808bbb..ba3d92e 100644 (file)
@@ -39,6 +39,8 @@ public class MapVspDescriptionDtoToVspDetails extends MappingBase<VspDescription
     target.setVendorName(source.getVendorName());
     target.setVendorId(source.getVendorId());
     target.setOnboardingMethod(source.getOnboardingMethod());
+    target.setOnboardingOrigin(source.getOnboardingOrigin());
+    target.setNetworkPackageName(source.getNetworkPackageName());
 
     VersionDto vlmVersion = source.getLicensingVersion();
     if (vlmVersion != null) {
index 0793e94..07cef57 100644 (file)
@@ -1,10 +1,10 @@
 package org.openecomp.sdcrests.vsp.rest.services;
 
 import org.apache.commons.beanutils.BeanUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder;
 import org.openecomp.sdc.common.errors.Messages;
-import org.openecomp.sdc.datatypes.error.ErrorLevel;
-import org.openecomp.sdc.datatypes.error.ErrorMessage;
 import org.openecomp.sdc.logging.api.Logger;
 import org.openecomp.sdc.logging.api.LoggerFactory;
 import org.openecomp.sdc.logging.context.MdcUtil;
@@ -32,11 +32,11 @@ import javax.ws.rs.core.Response;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.InvocationTargetException;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Optional;
 
+import static org.openecomp.core.utilities.file.FileUtils.getFileExtension;
+import static org.openecomp.core.utilities.file.FileUtils.getNetworkPackageName;
+
 @Named
 @Service("orchestrationTemplateCandidate")
 @Scope(value = "prototype")
@@ -48,31 +48,35 @@ public class OrchestrationTemplateCandidateImpl implements OrchestrationTemplate
           LoggerFactory.getLogger(OrchestrationTemplateCandidateImpl.class);
 
   @Override
-  public Response upload(String vspId, String versionId, InputStream heatFileToUpload,
+  public Response upload(String vspId, String versionId, Attachment fileToUpload,
                          String user) {
     MdcUtil.initMdc(LoggerServiceName.Upload_File.toString());
     logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.UPLOAD_HEAT + vspId);
-
+    String filename = fileToUpload.getContentDisposition().getParameter("filename");
     UploadFileResponse uploadFileResponse = candidateManager
         .upload(vspId, resolveVspVersion(vspId, null, user, VersionableEntityAction
-            .Write), heatFileToUpload, user);
+            .Write), fileToUpload.getObject(InputStream.class), user, getFileExtension(filename),
+            getNetworkPackageName(filename));
     UploadFileResponseDto uploadFileResponseDto = new MapUploadFileResponseToUploadFileResponseDto()
         .applyMapping(uploadFileResponse, UploadFileResponseDto.class);
 
     return Response.ok(uploadFileResponseDto).build();
   }
 
+
+
   @Override
   public Response get(String vspId, String versionId, String user) throws IOException {
-    Optional<byte[]> zipFile =
-        candidateManager
-            .get(vspId, resolveVspVersion(vspId, null, user, VersionableEntityAction.Read), user);
+
+    Optional<Pair<String, byte[]>> zipFile = candidateManager
+        .get(vspId, resolveVspVersion(vspId, null, user, VersionableEntityAction.Read), user);
 
     if (!zipFile.isPresent()) {
       return Response.status(Response.Status.NOT_FOUND).build();
     }
-    Response.ResponseBuilder response = Response.ok(zipFile.get());
-    response.header("Content-Disposition", "attachment; filename=HeatCandidate.zip");
+    Response.ResponseBuilder response = Response.ok(zipFile.get().getRight());
+    String filename = "Candidate." + zipFile.get().getLeft();
+    response.header("Content-Disposition", "attachment; filename=" + filename);
     return response.build();
   }
 
index 8f2e73b..0b73cbc 100644 (file)
@@ -47,14 +47,7 @@ import org.openecomp.sdc.vendorsoftwareproduct.types.VersionedVendorSoftwareProd
 import org.openecomp.sdc.versioning.dao.types.Version;
 import org.openecomp.sdc.versioning.types.VersionInfo;
 import org.openecomp.sdc.versioning.types.VersionableEntityAction;
-import org.openecomp.sdcrests.vendorsoftwareproducts.types.PackageInfoDto;
-import org.openecomp.sdcrests.vendorsoftwareproducts.types.QuestionnaireResponseDto;
-import org.openecomp.sdcrests.vendorsoftwareproducts.types.ValidationResponseDto;
-import org.openecomp.sdcrests.vendorsoftwareproducts.types.VersionSoftwareProductActionRequestDto;
-import org.openecomp.sdcrests.vendorsoftwareproducts.types.VspComputeDto;
-import org.openecomp.sdcrests.vendorsoftwareproducts.types.VspCreationDto;
-import org.openecomp.sdcrests.vendorsoftwareproducts.types.VspDescriptionDto;
-import org.openecomp.sdcrests.vendorsoftwareproducts.types.VspDetailsDto;
+import org.openecomp.sdcrests.vendorsoftwareproducts.types.*;
 import org.openecomp.sdcrests.vsp.rest.VendorSoftwareProducts;
 import org.openecomp.sdcrests.vsp.rest.mapping.MapComputeEntityToVspComputeDto;
 import org.openecomp.sdcrests.vsp.rest.mapping.MapPackageInfoToPackageInfoDto;
@@ -100,9 +93,13 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts {
             + vspDescriptionDto.getName());
 
       VspCreationDto vspCreationDto = null;
-      switch (vspDescriptionDto.getOnboardingMethod()) {
-        case "HEAT":
-        case "Manual":
+      OnboardingMethod onboardingMethod = OnboardingMethod.valueOf(vspDescriptionDto.getOnboardingMethod());
+      if (onboardingMethod == null){
+        return handleUnkownOnboardingMethod();
+      }
+      switch (onboardingMethod) {
+        case NetworkPackage:
+        case Manual:
           VspDetails vspDetails = new MapVspDescriptionDtoToVspDetails().
               applyMapping(vspDescriptionDto, VspDetails.class);
 
@@ -112,17 +109,21 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts {
           vspCreationDto = mapping.applyMapping(vspDetails, VspCreationDto.class);
           break;
         default:
-          ErrorCode onboardingMethodUpdateErrorCode = OnboardingMethodErrorBuilder
-              .getInvalidOnboardingMethodErrorBuilder();
-          MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
-              LoggerTragetServiceName.ADD_VSP, ErrorLevel.ERROR.name(),
-              LoggerErrorCode.DATA_ERROR.getErrorCode(), onboardingMethodUpdateErrorCode.message());
-          throw new CoreException(onboardingMethodUpdateErrorCode);
+          return handleUnkownOnboardingMethod();
       }
 
       return Response.ok(vspCreationDto).build();
     }
 
+  private Response handleUnkownOnboardingMethod() {
+    ErrorCode onboardingMethodUpdateErrorCode = OnboardingMethodErrorBuilder
+        .getInvalidOnboardingMethodErrorBuilder();
+    MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
+        LoggerTragetServiceName.ADD_VSP, ErrorLevel.ERROR.name(),
+        LoggerErrorCode.DATA_ERROR.getErrorCode(), onboardingMethodUpdateErrorCode.message());
+    throw new CoreException(onboardingMethodUpdateErrorCode);
+  }
+
   @Override
   public Response listVsps(String versionFilter, String user) {
     MdcUtil.initMdc(LoggerServiceName.List_VSP.toString());
index a79c70a..3bf2e8c 100644 (file)
@@ -32,6 +32,8 @@ import java.util.Map;
 public class UploadFileResponseDto {
   private Map<String, List<ErrorMessage>> errors;
   private UploadFileStatus status;
+  private String onboardingOrigin;
+  private String networkPackageName;
 
   public Map<String, List<ErrorMessage>> getErrors() {
     return errors;
@@ -49,4 +51,19 @@ public class UploadFileResponseDto {
     this.status = status;
   }
 
+  public String getOnboardingOrigin() {
+    return onboardingOrigin;
+  }
+
+  public void setOnboardingOrigin(String onboardingOrigin) {
+    this.onboardingOrigin = onboardingOrigin;
+  }
+
+  public String getNetworkPackageName() {
+    return networkPackageName;
+  }
+
+  public void setNetworkPackageName(String networkPackageName) {
+    this.networkPackageName = networkPackageName;
+  }
 }
index 80b68de..9062f89 100644 (file)
@@ -44,6 +44,8 @@ public class VspDescriptionDto {
 
   @NotNull
   private String onboardingMethod;
+  private String onboardingOrigin;
+  private String networkPackageName;
 
   public String getName() {
     return name;
@@ -124,4 +126,20 @@ public class VspDescriptionDto {
   public void setOnboardingMethod(String onboardingMethod) {
     this.onboardingMethod = onboardingMethod;
   }
+
+  public String getOnboardingOrigin() {
+    return onboardingOrigin;
+  }
+
+  public void setOnboardingOrigin(String onboardingOrigin) {
+    this.onboardingOrigin = onboardingOrigin;
+  }
+
+  public String getNetworkPackageName() {
+    return networkPackageName;
+  }
+
+  public void setNetworkPackageName(String networkPackageName) {
+    this.networkPackageName = networkPackageName;
+  }
 }
index d105acb..28a77f2 100644 (file)
@@ -41,7 +41,8 @@ public class VspDetailsDto extends VspDescriptionDto {
   private String lockingUser;
   private ValidationStructureList validationData;
   private String isOldVersion;
-
+  private String onboardingOrigin;
+  private String networkPackageName;
   public String getId() {
     return id;
   }
@@ -104,8 +105,21 @@ public class VspDetailsDto extends VspDescriptionDto {
 
   public void setValidationData(ValidationStructureList validationData) {
     this.validationData = validationData;
+  }
+
+  public String getOnboardingOrigin() {
+    return onboardingOrigin;
+  }
 
+  public void setOnboardingOrigin(String onboardingOrigin) {
+    this.onboardingOrigin = onboardingOrigin;
+  }
 
+  public String getNetworkPackageName() {
+    return networkPackageName;
   }
 
+  public void setNetworkPackageName(String networkPackageName) {
+    this.networkPackageName = networkPackageName;
+  }
 }
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);
   }
 
 }
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/C36B4399FCB942B19D493F839CFA10E2_0_1_General_6E70545C4854465D82DBDB9BCBEF0FB5 b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/C36B4399FCB942B19D493F839CFA10E2_0_1_General_6E70545C4854465D82DBDB9BCBEF0FB5
deleted file mode 100644 (file)
index 58e6f9e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-bla bla
\ No newline at end of file
index ba95d4a..b3fc9aa 100644 (file)
     </parent>
 
     <dependencies>
+        <dependency>
+            <groupId>org.openecomp.sdc.common</groupId>
+            <artifactId>openecomp-configuration-management-core</artifactId>
+            <version>${openecomp.sdc.common.version}</version>
+            <scope>runtime</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
         <dependency>
             <groupId>org.openecomp.sdc.common</groupId>
             <artifactId>openecomp-tosca-datatype</artifactId>
             <artifactId>openecomp-sdc-tosca-generator-core</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-orchesrtation-core</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-tosca-converter-api</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-tosca-converter-core</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
     <build>
         <plugins>
index e648cce..e2ef861 100644 (file)
@@ -20,6 +20,7 @@
 
 package org.openecomp.sdc.vendorsoftwareproduct;
 
+import org.apache.commons.lang3.tuple.Pair;
 import org.openecomp.sdc.vendorsoftwareproduct.types.OrchestrationTemplateActionResponse;
 import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
 import org.openecomp.sdc.vendorsoftwareproduct.types.ValidationResponse;
@@ -32,7 +33,7 @@ import java.util.Optional;
 
 public interface OrchestrationTemplateCandidateManager {
   UploadFileResponse upload(String vspId, Version version, InputStream heatFileToUpload,
-                            String user);
+                            String user, String filePrefix, String networkPackageName);
 
   OrchestrationTemplateActionResponse process(String vspId, Version version, String user);
 
@@ -41,5 +42,5 @@ public interface OrchestrationTemplateCandidateManager {
   ValidationResponse updateFilesDataStructure(String vspId, Version version, String user,
                                               FilesDataStructure fileDataStructure);
 
-  Optional<byte[]> get(String vspId, Version version, String user) throws IOException;
+  Optional<Pair<String, byte[]>> get(String vspId, Version version, String user) throws IOException;
 }
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 73558b4..fcf54ee 100644 (file)
@@ -25,6 +25,7 @@ import org.openecomp.core.enrichment.types.MonitoringUploadType;
 import org.openecomp.core.utilities.CommonMethods;
 import org.openecomp.core.utilities.file.FileContentHandler;
 import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.activityLog.ActivityLogManager;
 import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity;
 import org.openecomp.sdc.common.errors.CoreException;
@@ -44,6 +45,7 @@ import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
 import org.openecomp.sdc.vendorsoftwareproduct.MonitoringUploadsManager;
 import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentArtifactDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
 import org.openecomp.sdc.vendorsoftwareproduct.errors.MonitoringUploadErrorBuilder;
@@ -67,6 +69,7 @@ public class MonitoringUploadsManagerImpl implements MonitoringUploadsManager {
   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
   private ActivityLogManager activityLogManager;
   private ComponentArtifactDao componentArtifactDao;
+  private VendorSoftwareProductDao vendorSoftwareProductDao;
   private static final Logger logger =
       LoggerFactory.getLogger(VendorSoftwareProductManagerImpl.class);
 
@@ -253,7 +256,7 @@ public class MonitoringUploadsManagerImpl implements MonitoringUploadsManager {
                                          Map<String, List<ErrorMessage>> errors) {
     FileContentHandler contentMap;
     try {
-      contentMap = CommonUtil.validateAndUploadFileContent(uploadedFileData);
+      contentMap = CommonUtil.validateAndUploadFileContent(OnboardingTypesEnum.ZIP, uploadedFileData);
       VendorSoftwareProductUtils.validateContentZipData(contentMap, errors);
     } catch (IOException exception) {
       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
index 07e8480..3f6ffcc 100644 (file)
 package org.openecomp.sdc.vendorsoftwareproduct.impl;
 
 import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.apache.commons.lang3.tuple.Pair;
 import org.openecomp.core.model.dao.ServiceModelDao;
 import org.openecomp.core.model.types.ServiceElement;
-import org.openecomp.core.translator.datatypes.TranslatorOutput;
-import org.openecomp.core.util.UniqueValueUtil;
-import org.openecomp.core.utilities.file.FileContentHandler;
-import org.openecomp.core.utilities.file.FileUtils;
 import org.openecomp.core.utilities.json.JsonUtil;
-import org.openecomp.core.validation.util.MessageContainerUtil;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.activityLog.ActivityLogManager;
-import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity;
 import org.openecomp.sdc.common.errors.CoreException;
 import org.openecomp.sdc.common.errors.Messages;
-import org.openecomp.sdc.common.utils.CommonUtil;
 import org.openecomp.sdc.common.utils.SdcCommon;
 import org.openecomp.sdc.datatypes.error.ErrorLevel;
 import org.openecomp.sdc.datatypes.error.ErrorMessage;
 import org.openecomp.sdc.healing.api.HealingManager;
 import org.openecomp.sdc.healing.types.HealCode;
-import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree;
-import org.openecomp.sdc.heat.datatypes.structure.ValidationStructureList;
-import org.openecomp.sdc.heat.services.tree.HeatTreeManager;
-import org.openecomp.sdc.heat.services.tree.HeatTreeManagerUtil;
 import org.openecomp.sdc.logging.api.Logger;
 import org.openecomp.sdc.logging.api.LoggerFactory;
 import org.openecomp.sdc.logging.api.annotations.Metrics;
@@ -52,8 +43,6 @@ import org.openecomp.sdc.logging.messages.AuditMessages;
 import org.openecomp.sdc.logging.types.LoggerServiceName;
 import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
-import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
-import org.openecomp.sdc.validation.util.ValidationManagerUtil;
 import org.openecomp.sdc.vendorsoftwareproduct.OrchestrationTemplateCandidateManager;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentArtifactDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao;
@@ -62,40 +51,29 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.ProcessDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.UploadData;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
 import org.openecomp.sdc.vendorsoftwareproduct.errors.OrchestrationTemplateNotFoundErrorBuilder;
+import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationTemplateFileHandler;
+import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationUploadFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process.OrchestrationProcessFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process.OrchestrationTemplateProcessHandler;
 import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionDataExtractor;
 import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
 import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService;
-import org.openecomp.sdc.vendorsoftwareproduct.services.utils.CandidateEntityBuilder;
 import org.openecomp.sdc.vendorsoftwareproduct.types.OrchestrationTemplateActionResponse;
 import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
 import org.openecomp.sdc.vendorsoftwareproduct.types.ValidationResponse;
 import org.openecomp.sdc.vendorsoftwareproduct.types.candidateheat.FilesDataStructure;
-import org.openecomp.sdc.vendorsoftwareproduct.utils.VendorSoftwareProductUtils;
 import org.openecomp.sdc.versioning.dao.types.Version;
-import org.openecomp.sdcrests.activitylog.types.ActivityType;
 
-import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.nio.ByteBuffer;
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
-import static org.openecomp.sdc.logging.messages.AuditMessages.HEAT_VALIDATION_ERROR;
-import static org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.GENERAL_COMPONENT_ID;
-import static org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.UniqueValues.PROCESS_NAME;
-
 public class OrchestrationTemplateCandidateManagerImpl
     implements OrchestrationTemplateCandidateManager {
   private static final Logger logger =
@@ -162,65 +140,31 @@ public class OrchestrationTemplateCandidateManagerImpl
 
   @Override
   @Metrics
-  public UploadFileResponse upload(String vspId, Version version, InputStream heatFileToUpload,
-                                   String user) {
+  public UploadFileResponse upload(String vspId, Version version, InputStream fileToUpload,
+                                   String user, String filePrefix,
+                                   String networkPackageName) {
     mdcDataDebugMessage.debugEntryMessage("VSP id", vspId);
-
+    OrchestrationTemplateFileHandler orchestrationTemplateFileHandler =
+            OrchestrationUploadFactory.createOrchestrationTemplateFileHandler(filePrefix);
     VspDetails vspDetails = getVspDetails(vspId, version);
+    UploadFileResponse uploadResponse = orchestrationTemplateFileHandler
+        .upload(vspId, version, fileToUpload, user, candidateService,
+            vspDetails);
+    vspDetails.setOnboardingOrigin(filePrefix);
+    vspDetails.setNetworkPackageName(networkPackageName);
+    vspInfoDao.update(vspDetails);
+
+    uploadResponse.setNetworkPackageName(networkPackageName);
+    return uploadResponse;
+  }
 
-    UploadFileResponse uploadFileResponse = new UploadFileResponse();
-    if (isNotEmptyFileToUpload(heatFileToUpload, uploadFileResponse)) {
-      return uploadFileResponse;
-    }
-
-    byte[] uploadedFileData = FileUtils.toByteArray(heatFileToUpload);
-    if (isInvalidRawZipData(uploadFileResponse, uploadedFileData)) {
-      return uploadFileResponse;
-    }
-
-    Optional<FileContentHandler> optionalContentMap =
-        getZipContentMap(uploadFileResponse, uploadedFileData);
-    if (!optionalContentMap.isPresent()) {
-      logger.error(Messages.ZIP_CONTENT_MAP.getErrorMessage());
-      uploadFileResponse
-          .addStructureError(
-              SdcCommon.UPLOAD_FILE,
-              new ErrorMessage(ErrorLevel.ERROR, Messages.ZIP_CONTENT_MAP.getErrorMessage()));
-
-      mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
-      return uploadFileResponse;
-    }
-
-    if (!MapUtils.isEmpty(uploadFileResponse.getErrors())) {
-
-      mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
-      return uploadFileResponse;
-    }
-    try {
-      OrchestrationTemplateCandidateData candidateData =
-          new CandidateEntityBuilder(candidateService)
-              .buildCandidateEntityFromZip(vspDetails, uploadedFileData, optionalContentMap.get(),
-                  uploadFileResponse.getErrors(), user);
-      candidateService.updateCandidateUploadData(candidateData, vspDetails.getId());
-    } catch (Exception exception) {
-      logger.error(Messages.ZIP_CONTENT_MAP.getErrorMessage());
-      uploadFileResponse
-          .addStructureError(
-              SdcCommon.UPLOAD_FILE,
-              new ErrorMessage(ErrorLevel.ERROR, exception.getMessage()));
-
-      mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
-      return uploadFileResponse;
-    }
 
-    mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
-    return uploadFileResponse;
-  }
 
   @Override
   public OrchestrationTemplateActionResponse process(String vspId,
                                                      Version version, String user) {
     mdcDataDebugMessage.debugEntryMessage("VSP id", vspId);
+    OrchestrationTemplateActionResponse response = new OrchestrationTemplateActionResponse();
 
     Optional<OrchestrationTemplateCandidateData> candidate =
         fetchCandidateDataEntity(vspId, version);
@@ -228,97 +172,15 @@ public class OrchestrationTemplateCandidateManagerImpl
       throw new CoreException(new OrchestrationTemplateNotFoundErrorBuilder(vspId).build());
     }
 
-    logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_VALIDATION_STARTED + vspId);
-    OrchestrationTemplateActionResponse response = new OrchestrationTemplateActionResponse();
-    UploadFileResponse uploadFileResponse = new UploadFileResponse();
-    OrchestrationTemplateCandidateData candidateDataEntity = candidate.get();
-    Optional<FileContentHandler> fileContent =
-        getZipContentMap(uploadFileResponse, candidateDataEntity.getContentData().array());
-    if (!fileContent.isPresent()) {
-      response.addStructureErrors(uploadFileResponse.getErrors());
-      mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
-      response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId,
-          HEAT_VALIDATION_ERROR));
-      return response;
-    }
-
-    Map<String, List<ErrorMessage>> uploadErrors = uploadFileResponse.getErrors();
-    FileContentHandler fileContentMap = fileContent.get();
-    FilesDataStructure structure =
-        JsonUtil.json2Object(candidateDataEntity.getFilesDataStructure(), FilesDataStructure.class);
-
-    if (CollectionUtils.isNotEmpty(structure.getUnassigned())) {
-      response.addErrorMessageToMap(SdcCommon.UPLOAD_FILE,
-          Messages.FOUND_UNASSIGNED_FILES.getErrorMessage(), ErrorLevel.ERROR);
-
-      mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
-      response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId,
-          HEAT_VALIDATION_ERROR));
-      return response;
-    }
-
     VspDetails vspDetails =
         getVspDetails(vspId, version);
+    Optional<OrchestrationTemplateProcessHandler> processInstance =
+        OrchestrationProcessFactory.getInstance(vspDetails.getOnboardingOrigin());
 
-    String manifest = candidateService.createManifest(vspDetails, structure);
-    fileContentMap.addFile(SdcCommon.MANIFEST_NAME, manifest.getBytes());
-
-    Optional<ByteArrayInputStream> zipByteArrayInputStream = candidateService
-        .fetchZipFileByteArrayInputStream(vspId, candidateDataEntity, manifest, uploadErrors);
-    if (!zipByteArrayInputStream.isPresent()) {
-      response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId,
-          HEAT_VALIDATION_ERROR));
-      return response;
-    }
-
-    HeatStructureTree tree = createAndValidateHeatTree(response, fileContentMap);
-
-    Map<String, String> componentsQuestionnaire = new HashMap<>();
-    Map<String, Map<String, String>> componentNicsQuestionnaire = new HashMap<>();
-    Map<String, Collection<ComponentMonitoringUploadEntity>> componentMibList = new HashMap<>();
-    Map<String, Collection<ProcessEntity>> processes = new HashMap<>();
-    Map<String, ProcessEntity> processArtifact = new HashMap<>();
-
-    backupComponentsQuestionnaireBeforeDelete(vspId, version, componentsQuestionnaire,
-        componentNicsQuestionnaire, componentMibList, processes, processArtifact);
-
-    deleteUploadDataAndContent(vspId, version);
-    saveHotData(vspId, version, zipByteArrayInputStream.get(), fileContentMap, tree);
-
-    response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId,
-        HEAT_VALIDATION_ERROR));
-    if ( MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, response.getErrors
-        ()))) {
-      logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_VALIDATION_COMPLETED + vspId);
+    if(processInstance.isPresent()){
+      response = processInstance.get().process(vspDetails, candidate.get(), user);
     }
 
-    logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_TRANSLATION_STARTED + vspId);
-
-    TranslatorOutput translatorOutput =
-        HeatToToscaUtil.loadAndTranslateTemplateData(fileContentMap);
-
-    ToscaServiceModel toscaServiceModel = translatorOutput.getToscaServiceModel();
-    if (toscaServiceModel != null) {
-      serviceModelDao.storeServiceModel(vspId, version, toscaServiceModel);
-      //Extracting the compostion data from the output service model of the first phase of
-      // translation
-      compositionEntityDataManager.saveCompositionData(vspId, version,
-          compositionDataExtractor.extractServiceCompositionData(translatorOutput
-              .getNonUnifiedToscaServiceModel()));
-      retainComponentQuestionnaireData(vspId, version, componentsQuestionnaire,
-          componentNicsQuestionnaire, componentMibList, processes, processArtifact);
-
-      logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_TRANSLATION_COMPLETED + vspId);
-    }
-
-    uploadFileResponse.addStructureErrors(uploadErrors);
-
-    ActivityLogEntity activityLogEntity =
-        new ActivityLogEntity(vspId, String.valueOf(version.getMajor() + 1),
-            ActivityType.UPLOAD_HEAT.toString(), user, true, "", "");
-    activityLogManager.addActionLog(activityLogEntity, user);
-
-    mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
     return response;
   }
 
@@ -374,7 +236,7 @@ public class OrchestrationTemplateCandidateManagerImpl
 
   @Override
 
-  public Optional<byte[]> get(String vspId, Version version, String user)
+  public Optional<Pair<String, byte[]>> get(String vspId, Version version, String user)
       throws IOException {
     mdcDataDebugMessage.debugEntryMessage("VSP id", vspId);
 
@@ -393,15 +255,25 @@ public class OrchestrationTemplateCandidateManagerImpl
           .debugExitMessage("VSP id", vspId);
       return Optional.empty();
     }
+    OnboardingTypesEnum type =
+        OnboardingTypesEnum.getOnboardingTypesEnum(vspDetails.getOnboardingOrigin());
 
-    FilesDataStructure structure = JsonUtil
-        .json2Object(candidateDataEntity.get().getFilesDataStructure(), FilesDataStructure.class);
-    String manifest = candidateService.createManifest(vspDetails, structure);
+    if(vspDetails.getOnboardingOrigin().equals(OnboardingTypesEnum.ZIP.toString())) {
+      FilesDataStructure structure = JsonUtil
+          .json2Object(candidateDataEntity.get().getFilesDataStructure(), FilesDataStructure.class);
+      String manifest = candidateService.createManifest(vspDetails, structure);
 
-    mdcDataDebugMessage
-        .debugExitMessage("VSP id", vspId);
-    return Optional.ofNullable(candidateService
-        .replaceManifestInZip(candidateDataEntity.get().getContentData(), manifest, vspId));
+      mdcDataDebugMessage
+          .debugExitMessage("VSP id", vspId);
+      return Optional.ofNullable(
+          new ImmutablePair<>(OnboardingTypesEnum.ZIP.toString(),candidateService
+              .replaceManifestInZip(candidateDataEntity.get().getContentData(),
+              manifest, vspId, type)));
+    }
+
+    return Optional.ofNullable(
+        new ImmutablePair<>(vspDetails.getOnboardingOrigin(),candidateDataEntity.get()
+            .getContentData().array()));
   }
 
   private Optional<OrchestrationTemplateCandidateData> fetchCandidateDataEntity(
@@ -410,213 +282,6 @@ public class OrchestrationTemplateCandidateManagerImpl
         .ofNullable(candidateService.getOrchestrationTemplateCandidate(vspId, version));
   }
 
-  private void retainComponentQuestionnaireData(String vspId, Version activeVersion,
-                                                Map<String, String> componentsQustanniare,
-                                                Map<String, Map<String, String>>
-                                                    componentNicsQustanniare,
-                                                Map<String, Collection<ComponentMonitoringUploadEntity>> componentMibList,
-                                                Map<String, Collection<ProcessEntity>> processes,
-                                                Map<String, ProcessEntity> processArtifact) {
-    //VSP processes
-    restoreProcess(vspId, activeVersion, GENERAL_COMPONENT_ID, GENERAL_COMPONENT_ID, processes,
-        processArtifact);
-    Collection<ComponentEntity>
-        components = vendorSoftwareProductDao.listComponents(vspId, activeVersion);
-    components.forEach(componentEntity -> {
-      String componentName = componentEntity.getComponentCompositionData().getName();
-      if (componentsQustanniare.containsKey(componentName)) {
-        componentDao.updateQuestionnaireData(vspId, activeVersion,
-            componentEntity.getId(),
-            componentsQustanniare.get(componentEntity.getComponentCompositionData()
-                .getName()));
-        if (componentNicsQustanniare.containsKey(componentName)) {
-          Map<String, String> nicsQustanniare = componentNicsQustanniare.get(componentName);
-          Collection<NicEntity>
-              nics =
-              nicDao.list(new NicEntity(vspId, activeVersion, componentEntity.getId(), null));
-          nics.forEach(nicEntity -> {
-            if (nicsQustanniare.containsKey(nicEntity.getNicCompositionData().getName())) {
-              nicDao.updateQuestionnaireData(vspId, activeVersion,
-                  componentEntity.getId(), nicEntity.getId(),
-                  nicsQustanniare.get(nicEntity.getNicCompositionData().getName()));
-            }
-          });
-        }
-        //MIB //todo add for VES_EVENTS
-        if (componentMibList.containsKey(componentName)) {
-          Collection<ComponentMonitoringUploadEntity> mibList =
-              componentMibList.get(componentName);
-          mibList.forEach(mib -> {
-            mib.setComponentId(componentEntity.getId());
-            componentArtifactDao.create(mib);
-          });
-        }
-        //VFC processes
-        restoreProcess(vspId, activeVersion, componentEntity.getId(), componentName, processes,
-            processArtifact);
-      }
-    });
-  }
-
-  private void backupComponentsQuestionnaireBeforeDelete(String vspId, Version activeVersion,
-                                                         Map<String, String> componentsQustanniare,
-                                                         Map<String, Map<String, String>>
-                                                           componentNicsQustanniare,
-                                                         Map<String, Collection<ComponentMonitoringUploadEntity>>
-                                                           componentMibList,
-                                                         Map<String, Collection<ProcessEntity>>
-                                                             componentProcesses,
-                                                         Map<String, ProcessEntity> processArtifact) {
-    //backup VSP processes
-    backupProcess(vspId, activeVersion, GENERAL_COMPONENT_ID, GENERAL_COMPONENT_ID,
-        componentProcesses, processArtifact);
-    Collection<ComponentEntity> componentsCompositionAndQuestionnaire = vendorSoftwareProductDao
-        .listComponentsCompositionAndQuestionnaire(vspId,
-            activeVersion);
-    componentsCompositionAndQuestionnaire.forEach(componentEntity -> {
-      String componentName = componentEntity.getComponentCompositionData().getName();
-      componentsQustanniare.put(componentName, componentEntity
-          .getQuestionnaireData());
-      Collection<NicEntity>
-          nics = nicDao.list(new NicEntity(vspId, activeVersion, componentEntity.getId(), null));
-      //backup mib
-      Collection<ComponentMonitoringUploadEntity> componentMib =
-          componentArtifactDao.listArtifacts(new
-              ComponentMonitoringUploadEntity(vspId, activeVersion, componentEntity.getId(),
-              null));
-      if (CollectionUtils.isNotEmpty(componentMib)) {
-        componentMibList.put(componentName,componentMib);
-      }
-
-      //backup component processes
-      backupProcess(vspId, activeVersion, componentEntity.getId(), componentName,
-          componentProcesses, processArtifact);
-      if (CollectionUtils.isNotEmpty(nics)) {
-        Map<String, String> nicsQustanniare = new HashMap<>();
-        nics.forEach(nicEntity -> {
-          NicEntity nic = nicDao.get(new NicEntity(vspId, activeVersion, componentEntity.getId(),
-              nicEntity.getId()));
-          NicEntity nicQuestionnaire = nicDao.getQuestionnaireData(vspId, activeVersion,
-              componentEntity.getId(), nicEntity.getId());
-
-          nicsQustanniare
-              .put(nicEntity.getNicCompositionData().getName(),
-                  nicQuestionnaire.getQuestionnaireData());
-        });
-        componentNicsQustanniare.put(componentName, nicsQustanniare);
-      }
-    });
-  }
-
-  private void backupProcess(String vspId, Version activeVersion, String componentId,
-                             String componentName, Map<String,
-      Collection<ProcessEntity>> processes,
-                             Map<String, ProcessEntity> processArtifact) {
-    Collection<ProcessEntity> processList = vendorSoftwareProductDao.listProcesses(vspId,
-        activeVersion, componentId);
-    if (!processList.isEmpty()) {
-      processes.put(componentName, processList);
-      processList.forEach(process -> {
-        //ProcessArtifactEntity artifact = vendorSoftwareProductDao.getProcessArtifact(vspId,
-        //    activeVersion, componentId, process.getId());
-        ProcessEntity artifact =
-            processDao.get(new ProcessEntity(vspId, activeVersion, componentId, process.getId()));
-        if (artifact.getArtifact() != null) {
-          processArtifact.put(process.getId(), artifact);
-        }
-      });
-    }
-  }
-
-  private void restoreProcess(String vspId, Version activeVersion, String componentId,
-                              String componentName,
-                              Map<String, Collection<ProcessEntity>> processes,
-                              Map<String, ProcessEntity> processArtifact) {
-    if (processes.containsKey(componentName)) {
-      Collection<ProcessEntity> processList = processes.get(componentName);
-      processList.forEach(process -> {
-        //Reatin VFC process
-        if (!GENERAL_COMPONENT_ID.equals(componentId) && processArtifact.containsKey(process.getId
-            ())) {
-          ProcessEntity artifact = processArtifact.get(process.getId());
-          artifact.setComponentId(componentId);
-          UniqueValueUtil.createUniqueValue(PROCESS_NAME, vspId, activeVersion.toString(),
-              componentId, process.getName());
-          vendorSoftwareProductDao.createProcess(artifact);
-        }
-      });
-    }
-  }
-
-  private HeatStructureTree createAndValidateHeatTree(OrchestrationTemplateActionResponse response,
-                                                      FileContentHandler fileContentMap) {
-    VendorSoftwareProductUtils.addFileNamesToUploadFileResponse(fileContentMap, response);
-    Map<String, List<ErrorMessage>> validationErrors =
-        ValidationManagerUtil.initValidationManager(fileContentMap).validate();
-    response.getErrors().putAll(validationErrors);
-
-    HeatTreeManager heatTreeManager = HeatTreeManagerUtil.initHeatTreeManager(fileContentMap);
-    heatTreeManager.createTree();
-    heatTreeManager.addErrors(validationErrors);
-    return heatTreeManager.getTree();
-  }
-
-  private void saveHotData(String vspId, Version activeVersion, InputStream uploadedFileData,
-                           FileContentHandler fileContentMap, HeatStructureTree tree) {
-    Map<String, Object> manifestAsMap =
-        (Map<String, Object>) JsonUtil.json2Object(fileContentMap.getFileContent(
-            SdcCommon.MANIFEST_NAME), Map.class);
-
-    UploadData uploadData = new UploadData();
-    uploadData.setPackageName((String) manifestAsMap.get("name"));
-    uploadData.setPackageVersion((String) manifestAsMap.get("version"));
-    uploadData.setContentData(ByteBuffer.wrap(FileUtils.toByteArray(uploadedFileData)));
-    uploadData.setValidationDataStructure(new ValidationStructureList(tree));
-    orchestrationTemplateDataDao.updateOrchestrationTemplateData(vspId, uploadData);
-  }
-
-  private void deleteUploadDataAndContent(String vspId, Version version) {
-    //fixme change this when more tables are zusammenized
-    vendorSoftwareProductDao.deleteUploadData(vspId, version);
-  }
-
-  private boolean isInvalidRawZipData(UploadFileResponse uploadFileResponse,
-                                      byte[] uploadedFileData) {
-    Optional<ErrorMessage> errorMessage;
-    errorMessage = candidateService.validateRawZipData(uploadedFileData);
-    if (errorMessage.isPresent()) {
-      uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get());
-      return true;
-    }
-    return false;
-  }
-
-  private boolean isNotEmptyFileToUpload(InputStream heatFileToUpload,
-                                         UploadFileResponse uploadFileResponse) {
-    Optional<ErrorMessage> errorMessage =
-        candidateService.validateNonEmptyFileToUpload(heatFileToUpload);
-    if (errorMessage.isPresent()) {
-      uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get());
-      return true;
-    }
-    return false;
-  }
-
-  private Optional<FileContentHandler> getZipContentMap(UploadFileResponse uploadFileResponse,
-                                                        byte[] uploadedFileData) {
-    FileContentHandler contentMap = null;
-    try {
-      contentMap = CommonUtil.validateAndUploadFileContent(uploadedFileData);
-    } catch (IOException exception) {
-      uploadFileResponse.addStructureError(
-          SdcCommon.UPLOAD_FILE,
-          new ErrorMessage(ErrorLevel.ERROR, Messages.INVALID_ZIP_FILE.getErrorMessage()));
-    } catch (CoreException coreException) {
-      uploadFileResponse.addStructureError(
-          SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, coreException.getMessage()));
-    }
-    return Optional.ofNullable(contentMap);
-  }
 
   // todo *************************** move to reusable place! *************************
 
@@ -646,4 +311,4 @@ public class OrchestrationTemplateCandidateManagerImpl
     });
   }
 
- }
+}
index de33ce8..78c4cbf 100644 (file)
@@ -22,6 +22,7 @@ package org.openecomp.sdc.vendorsoftwareproduct.impl;
 
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
+import org.openecomp.core.converter.datatypes.Constants;
 import org.openecomp.core.enrichment.api.EnrichmentManager;
 import org.openecomp.core.enrichment.factory.EnrichmentManagerFactory;
 import org.openecomp.core.model.dao.EnrichedServiceModelDao;
@@ -31,6 +32,7 @@ import org.openecomp.core.util.UniqueValueUtil;
 import org.openecomp.core.utilities.file.FileContentHandler;
 import org.openecomp.core.utilities.json.JsonSchemaDataGenerator;
 import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.core.validation.api.ValidationManager;
 import org.openecomp.core.validation.util.MessageContainerUtil;
 import org.openecomp.sdc.activityLog.ActivityLogManager;
@@ -94,8 +96,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 +130,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 +147,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 +177,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 +184,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 +220,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 +233,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 +253,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 +278,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 +301,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,vspDetails), 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 +371,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 +380,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 +445,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 +456,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 +478,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 +496,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 +518,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 +530,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 +544,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 +563,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 +582,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 +605,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 +628,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);
@@ -652,17 +643,19 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
 
     validateUniqueName(vspDetails.getName());
 
+    vspDetails.setOnboardingOrigin(OnboardingTypesEnum.NONE.toString());
+
     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 +668,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 +695,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 +716,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 +740,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,12 +769,20 @@ 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));
 
+    if(Objects.isNull(vsp.getOnboardingOrigin())){
+      vsp.setOnboardingOrigin(OnboardingTypesEnum.ZIP.toString());
+    }
+
+    if(Objects.isNull(vsp.getNetworkPackageName())){
+      vsp.setNetworkPackageName("Upload File");
+    }
+
     mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
     return vsp;
   }
@@ -789,12 +790,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 +831,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 +846,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 +897,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 +922,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 +936,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 +962,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 +981,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 +995,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 +1032,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();
 
@@ -1055,8 +1056,9 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
   }
 
 
-  private Map<String, List<ErrorMessage>> validateUploadData(UploadDataEntity uploadData)
-      throws IOException {
+  private Map<String, List<ErrorMessage>> validateUploadData(UploadDataEntity uploadData,
+                                                             VspDetails vspDetails)
+          throws IOException {
 
     Map<String, List<ErrorMessage>> validationErrors = new HashMap<>();
     if (uploadData == null || uploadData.getContentData() == null) {
@@ -1064,22 +1066,24 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
     }
 
     FileContentHandler fileContentMap =
-        CommonUtil.validateAndUploadFileContent(uploadData.getContentData().array());
+            CommonUtil.validateAndUploadFileContent(OnboardingTypesEnum.getOnboardingTypesEnum
+                            (vspDetails.getOnboardingOrigin()),
+                    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 +1094,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 +1107,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 +1127,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 +1137,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 +1158,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 +1176,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 +1201,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));
       }
     });
   }
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/BaseOrchestrationTemplateHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/BaseOrchestrationTemplateHandler.java
new file mode 100644 (file)
index 0000000..c7fb437
--- /dev/null
@@ -0,0 +1,100 @@
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration;
+
+import org.apache.commons.collections4.MapUtils;
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
+import org.openecomp.sdc.common.errors.Messages;
+import org.openecomp.sdc.common.utils.SdcCommon;
+import org.openecomp.sdc.datatypes.error.ErrorLevel;
+import org.openecomp.sdc.datatypes.error.ErrorMessage;
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerFactory;
+import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
+import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService;
+import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.io.InputStream;
+import java.util.Optional;
+import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters;
+public abstract class BaseOrchestrationTemplateHandler implements OrchestrationTemplateFileHandler {
+    protected static final Logger logger =
+            LoggerFactory.getLogger(BaseOrchestrationTemplateHandler.class);
+    protected static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
+
+    @Override
+    public UploadFileResponse upload(String vspId, Version version, InputStream fileToUpload, String user,
+                                     CandidateService candidateService, VspDetails vspDetails) {
+        UploadFileResponse uploadFileResponse = new UploadFileResponse();
+        uploadFileResponse.setOnboardingType(getHandlerType());
+        if (isNotEmptyFileToUpload(fileToUpload, uploadFileResponse, candidateService)) {
+            return uploadFileResponse;
+        }
+
+        byte[] uploadedFileData = FileUtils.toByteArray(fileToUpload);
+        if (isInvalidRawZipData(uploadFileResponse, uploadedFileData, candidateService)) {
+            return uploadFileResponse;
+        }
+
+        Optional<FileContentHandler> optionalContentMap =
+                getFileContentMap(uploadFileResponse, uploadedFileData);
+        if (!optionalContentMap.isPresent()) {
+            logger.error(getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(), getHandlerType().toString()));
+            uploadFileResponse
+                    .addStructureError(
+                            SdcCommon.UPLOAD_FILE,
+                            new ErrorMessage(ErrorLevel.ERROR,
+                                    getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(), getHandlerType().toString())));
+
+            mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
+            return uploadFileResponse;
+        }
+
+        if (!MapUtils.isEmpty(uploadFileResponse.getErrors())) {
+
+            mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
+            return uploadFileResponse;
+        }
+        if (updateCandidateData(vspId, user, candidateService, vspDetails, uploadFileResponse,
+                uploadedFileData, optionalContentMap))
+            return uploadFileResponse;
+
+        mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
+        return uploadFileResponse;
+
+    }
+
+    protected abstract boolean updateCandidateData(String vspId, String user, CandidateService candidateService,
+                                                   VspDetails vspDetails, UploadFileResponse uploadFileResponse,
+                                                   byte[] uploadedFileData,
+                                                   Optional<FileContentHandler> optionalContentMap);
+
+
+    private boolean isNotEmptyFileToUpload(InputStream fileToUpload,
+                                           UploadFileResponse uploadFileResponse, CandidateService candidateService) {
+        Optional<ErrorMessage> errorMessage =
+                candidateService.validateNonEmptyFileToUpload(fileToUpload);
+        if (errorMessage.isPresent()) {
+            uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get());
+            return true;
+        }
+        return false;
+    }
+
+    protected boolean isInvalidRawZipData(UploadFileResponse uploadFileResponse,
+                                        byte[] uploadedFileData, CandidateService candidateService) {
+        Optional<ErrorMessage> errorMessage;
+        errorMessage = candidateService.validateRawZipData(uploadedFileData);
+        if (errorMessage.isPresent()) {
+            uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get());
+            return true;
+        }
+        return false;
+    }
+
+    public abstract Optional<FileContentHandler> getFileContentMap(UploadFileResponse uploadFileResponse,
+                                                                   byte[] uploadedFileData);
+    protected abstract OnboardingTypesEnum getHandlerType();
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateCSARHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateCSARHandler.java
new file mode 100644 (file)
index 0000000..53d3474
--- /dev/null
@@ -0,0 +1,154 @@
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration;
+
+import org.apache.commons.lang3.tuple.Pair;
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.common.errors.Messages;
+import org.openecomp.sdc.common.utils.CommonUtil;
+import org.openecomp.sdc.common.utils.SdcCommon;
+import org.openecomp.sdc.datatypes.error.ErrorLevel;
+import org.openecomp.sdc.datatypes.error.ErrorMessage;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
+import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.OnboardingManifest;
+import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService;
+import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters;
+import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.CSARConstants.*;
+public class OrchestrationTemplateCSARHandler extends BaseOrchestrationTemplateHandler
+        implements OrchestrationTemplateFileHandler {
+
+
+    @Override
+    public Optional<FileContentHandler> getFileContentMap(UploadFileResponse uploadFileResponse,
+                                                          byte[] uploadedFileData) {
+        FileContentHandler contentMap = null;
+        List<String> folderList = new ArrayList<>();
+        try {
+            Pair<FileContentHandler, List<String>> fileContentMapFromOrchestrationCandidateZip = CommonUtil.getFileContentMapFromOrchestrationCandidateZip(uploadedFileData);
+            contentMap = fileContentMapFromOrchestrationCandidateZip.getKey();
+            folderList = fileContentMapFromOrchestrationCandidateZip.getRight();
+        } catch (IOException exception) {
+            uploadFileResponse.addStructureError(
+                    SdcCommon.UPLOAD_FILE,
+                    new ErrorMessage(ErrorLevel.ERROR, Messages.INVALID_CSAR_FILE.getErrorMessage()));
+        } catch (CoreException coreException) {
+            uploadFileResponse.addStructureError(
+                    SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, coreException.getMessage()));
+        }
+        validateContent(uploadFileResponse, contentMap, folderList);
+        return Optional.ofNullable(contentMap);
+    }
+
+    private void validateContent(UploadFileResponse uploadFileResponse, FileContentHandler contentMap, List<String> folderList) {
+        validateManifest(uploadFileResponse, contentMap);
+        validateFileExist(uploadFileResponse, contentMap, MAIN_SERVICE_TEMPLATE_YAML_FILE_NAME);
+        validateNoExtraFiles(uploadFileResponse, contentMap);
+        validateFolders(uploadFileResponse, folderList);
+    }
+
+    private void validateManifest(UploadFileResponse uploadFileResponse, FileContentHandler contentMap) {
+        if (!validateFileExist(uploadFileResponse, contentMap, MAIN_SERVICE_TEMPLATE_MF_FILE_NAME)){
+            return;
+        }
+        InputStream fileContent = contentMap.getFileContent(MAIN_SERVICE_TEMPLATE_MF_FILE_NAME);
+        OnboardingManifest onboardingManifest = new OnboardingManifest(fileContent);
+        if (!onboardingManifest.isValid()){
+            onboardingManifest.getErrors().forEach(error -> uploadFileResponse.addStructureError(
+                    SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, error)));
+        }
+    }
+
+    private void validateNoExtraFiles(UploadFileResponse uploadFileResponse,  FileContentHandler contentMap) {
+        List<String> unwantedFiles = contentMap.getFileList().stream()
+                .filter(this::filterFiles).collect(Collectors.toList());
+        if (!unwantedFiles.isEmpty()) {
+            unwantedFiles.stream().filter(this::filterFiles).forEach(unwantedFile ->
+                    uploadFileResponse.addStructureError(
+                            SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR,
+                                    getErrorWithParameters(Messages.CSAR_FILES_NOT_ALLOWED.getErrorMessage(),
+                                            unwantedFile))));
+
+          ;
+        }
+    }
+
+    private void validateFolders(UploadFileResponse uploadFileResponse, List<String> folderList) {
+        List<String> filterResult = folderList.stream().filter(this::filterFolders).collect(Collectors.toList());
+        if (!filterResult.isEmpty()) {
+            folderList.stream().filter(this::filterFolders).forEach( unwantedFolder ->
+                    uploadFileResponse.addStructureError(
+                            SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR,
+                                    getErrorWithParameters(Messages.CSAR_DIRECTORIES_NOT_ALLOWED.getErrorMessage(),
+                                            unwantedFolder))));
+
+        }
+    }
+    private boolean filterFiles(String inFileName) {
+        boolean valid = ELIGIBLE_FILES.stream().anyMatch(fileName -> fileName.equals(inFileName));
+        if (valid){
+            return !valid;
+        }
+        return filterFolders(inFileName);
+    }
+
+    private boolean filterFolders(String fileName) {
+        return !ELIGBLE_FOLDERS.stream().anyMatch(dirName -> fileName.startsWith(dirName));
+    }
+
+    private boolean validateFileExist(UploadFileResponse uploadFileResponse, FileContentHandler contentMap, String fileName) {
+
+        boolean containsFile = contentMap.containsFile(fileName);
+        if (!containsFile) {
+            uploadFileResponse.addStructureError(
+                    SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR,
+                            getErrorWithParameters(Messages.CSAR_FILE_NOT_FOUND.getErrorMessage(), fileName)));
+        }
+        return containsFile;
+    }
+
+    @Override
+    protected boolean updateCandidateData(String vspId, String user, CandidateService candidateService,
+                                          VspDetails vspDetails, UploadFileResponse uploadFileResponse,
+                                          byte[] uploadedFileData, Optional<FileContentHandler> optionalContentMap) {
+        try {
+            candidateService.updateCandidateUploadData(new OrchestrationTemplateCandidateData(
+                    ByteBuffer.wrap(uploadedFileData), ""), vspDetails.getId());
+        } catch (Exception exception) {
+            logger.error(getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(),
+                    getHandlerType().toString()), exception);
+            uploadFileResponse
+                    .addStructureError(
+                            SdcCommon.UPLOAD_FILE,
+                            new ErrorMessage(ErrorLevel.ERROR, exception.getMessage()));
+
+            mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
+            return true;
+        }
+        return false;
+    }
+
+
+    @Override
+    protected OnboardingTypesEnum getHandlerType() {
+        return OnboardingTypesEnum.CSAR;
+    }
+
+    @Override
+    protected boolean isInvalidRawZipData(UploadFileResponse uploadFileResponse,
+                                          byte[] uploadedFileData, CandidateService candidateService) {
+        return super.isInvalidRawZipData(uploadFileResponse, uploadedFileData, candidateService);
+
+    }
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateFileHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateFileHandler.java
new file mode 100644 (file)
index 0000000..3f7d18d
--- /dev/null
@@ -0,0 +1,12 @@
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration;
+
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
+import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService;
+import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.io.InputStream;
+public interface OrchestrationTemplateFileHandler {
+    UploadFileResponse upload(String vspId, Version version, InputStream fileToUpload, String user,
+                              CandidateService candidateService, VspDetails vspDetails);
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateZipHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateZipHandler.java
new file mode 100644 (file)
index 0000000..626d941
--- /dev/null
@@ -0,0 +1,55 @@
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration;
+
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
+import org.openecomp.sdc.common.errors.Messages;
+import org.openecomp.sdc.common.utils.SdcCommon;
+import org.openecomp.sdc.datatypes.error.ErrorLevel;
+import org.openecomp.sdc.datatypes.error.ErrorMessage;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
+import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService;
+import org.openecomp.sdc.vendorsoftwareproduct.services.utils.CandidateEntityBuilder;
+import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
+
+import java.util.Optional;
+
+import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters;
+public class OrchestrationTemplateZipHandler extends BaseOrchestrationTemplateHandler
+        implements OrchestrationTemplateFileHandler {
+
+    @Override
+    public  Optional<FileContentHandler> getFileContentMap(UploadFileResponse uploadFileResponse,
+                                                           byte[] uploadedFileData) {
+       return   OrchestrationUtil.getFileContentMap(OnboardingTypesEnum.ZIP, uploadFileResponse, uploadedFileData);
+    }
+
+    @Override
+    protected boolean updateCandidateData(String vspId, String user, CandidateService candidateService,
+                                          VspDetails vspDetails, UploadFileResponse uploadFileResponse,
+                                          byte[] uploadedFileData, Optional<FileContentHandler> optionalContentMap) {
+        try {
+            OrchestrationTemplateCandidateData candidateData =
+                    new CandidateEntityBuilder(candidateService)
+                            .buildCandidateEntityFromZip(vspDetails, uploadedFileData, optionalContentMap.get(),
+                                    uploadFileResponse.getErrors(), user);
+            candidateService.updateCandidateUploadData(candidateData, vspDetails.getId());
+        } catch (Exception exception) {
+            logger.error(getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(),
+                    getHandlerType().toString()),exception);
+            uploadFileResponse
+                    .addStructureError(
+                            SdcCommon.UPLOAD_FILE,
+                            new ErrorMessage(ErrorLevel.ERROR, exception.getMessage()));
+
+            mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    protected OnboardingTypesEnum getHandlerType() {
+        return OnboardingTypesEnum.ZIP;
+    }
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationUploadFactory.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationUploadFactory.java
new file mode 100644 (file)
index 0000000..85f9266
--- /dev/null
@@ -0,0 +1,29 @@
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration;
+
+import org.openecomp.config.api.Configuration;
+import org.openecomp.config.api.ConfigurationManager;
+import org.openecomp.core.utilities.CommonMethods;
+import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationUtil.ORCHESTRATION_CONFIG_NAMESPACE;
+import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationUtil.ORCHESTRATION_IMPL_KEY;
+
+public class OrchestrationUploadFactory {
+    private static Map<String, ImplementationConfiguration> fileHanlders;
+
+    static {
+        Configuration config = ConfigurationManager.lookup();
+        fileHanlders = new ConcurrentHashMap<>(config.populateMap(ORCHESTRATION_CONFIG_NAMESPACE,
+                ORCHESTRATION_IMPL_KEY, ImplementationConfiguration.class));
+
+    }
+
+    public static final OrchestrationTemplateFileHandler createOrchestrationTemplateFileHandler(String filePrefix) {
+        ImplementationConfiguration orchestrationTemplateFileHandler = fileHanlders.get(filePrefix);
+        return  CommonMethods.newInstance(orchestrationTemplateFileHandler.getImplementationClass(),
+                        OrchestrationTemplateFileHandler.class);
+    }
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationUtil.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationUtil.java
new file mode 100644 (file)
index 0000000..9d7421f
--- /dev/null
@@ -0,0 +1,282 @@
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.openecomp.core.model.dao.ServiceModelDao;
+import org.openecomp.core.model.dao.ServiceModelDaoFactory;
+import org.openecomp.core.util.UniqueValueUtil;
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.common.errors.Messages;
+import org.openecomp.sdc.common.utils.CommonUtil;
+import org.openecomp.sdc.common.utils.SdcCommon;
+import org.openecomp.sdc.datatypes.error.ErrorLevel;
+import org.openecomp.sdc.datatypes.error.ErrorMessage;
+import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree;
+import org.openecomp.sdc.heat.datatypes.structure.ValidationStructureList;
+import org.openecomp.sdc.heat.services.tree.HeatTreeManager;
+import org.openecomp.sdc.heat.services.tree.HeatTreeManagerUtil;
+import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentArtifactDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.MonitoringUploadDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ProcessDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ProcessDaoFactory;
+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.type.ComponentMonitoringUploadEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.UploadData;
+import org.openecomp.sdc.vendorsoftwareproduct.factory.CompositionDataExtractorFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.factory.CompositionEntityDataManagerFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionDataExtractor;
+import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
+import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
+import static org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.GENERAL_COMPONENT_ID;
+import static org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.UniqueValues.PROCESS_NAME;
+
+public class OrchestrationUtil {
+
+    public static final String ORCHESTRATION_CONFIG_NAMESPACE = "orchestration";
+    public static final String ORCHESTRATION_IMPL_KEY = "orchestration_impl";
+
+
+    private static VendorSoftwareProductDao vendorSoftwareProductDao =
+        VendorSoftwareProductDaoFactory.getInstance().createInterface();
+    private static NicDao nicDao = NicDaoFactory.getInstance().createInterface();
+    private static ComponentArtifactDao componentArtifactDao = MonitoringUploadDaoFactory.getInstance().createInterface();
+    private static ProcessDao processDao = ProcessDaoFactory.getInstance().createInterface();
+    private static OrchestrationTemplateDao orchestrationTemplateDataDao =
+        OrchestrationTemplateDaoFactory.getInstance().createInterface();
+    private static ComponentDao componentDao =
+        ComponentDaoFactory.getInstance().createInterface();
+    private static ServiceModelDao serviceModelDao = ServiceModelDaoFactory.getInstance()
+        .createInterface();
+    private static CompositionEntityDataManager compositionEntityDataManager =
+        CompositionEntityDataManagerFactory.getInstance().createInterface();
+    private static CompositionDataExtractor compositionDataExtractor =
+        CompositionDataExtractorFactory.getInstance().createInterface();
+
+    public static Optional<FileContentHandler> getFileContentMap(OnboardingTypesEnum type,
+                                                                 UploadFileResponse uploadFileResponse,
+                                                                 byte[] uploadedFileData) {
+        FileContentHandler contentMap = null;
+        try {
+            contentMap = CommonUtil.validateAndUploadFileContent(type, uploadedFileData);
+        } catch (IOException exception) {
+            uploadFileResponse.addStructureError(
+                    SdcCommon.UPLOAD_FILE,
+                    new ErrorMessage(ErrorLevel.ERROR, Messages.INVALID_ZIP_FILE.getErrorMessage()));
+        } catch (CoreException coreException) {
+            uploadFileResponse.addStructureError(
+                    SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, coreException.getMessage()));
+        }
+        return Optional.ofNullable(contentMap);
+    }
+
+    public static void backupComponentsQuestionnaireBeforeDelete(String vspId, Version activeVersion,
+                                                           Map<String, String> componentsQustanniare,
+                                                           Map<String, Map<String, String>>
+                                                               componentNicsQustanniare,
+                                                           Map<String, Collection<ComponentMonitoringUploadEntity>>
+                                                               componentMibList,
+                                                           Map<String, Collection<ProcessEntity>>
+                                                               componentProcesses,
+                                                           Map<String, ProcessEntity> processArtifact) {
+        //backup VSP processes
+        backupProcess(vspId, activeVersion, GENERAL_COMPONENT_ID, GENERAL_COMPONENT_ID,
+            componentProcesses, processArtifact);
+        Collection<ComponentEntity> componentsCompositionAndQuestionnaire = vendorSoftwareProductDao
+            .listComponentsCompositionAndQuestionnaire(vspId,
+                activeVersion);
+        componentsCompositionAndQuestionnaire.forEach(componentEntity -> {
+            String componentName = componentEntity.getComponentCompositionData().getName();
+            componentsQustanniare.put(componentName, componentEntity
+                .getQuestionnaireData());
+            Collection<NicEntity>
+                nics = nicDao.list(new NicEntity(vspId, activeVersion, componentEntity.getId(), null));
+            //backup mib
+            Collection<ComponentMonitoringUploadEntity> componentMib =
+                componentArtifactDao.listArtifacts(new
+                    ComponentMonitoringUploadEntity(vspId, activeVersion, componentEntity.getId(),
+                    null));
+            if (CollectionUtils.isNotEmpty(componentMib)) {
+                componentMibList.put(componentName,componentMib);
+            }
+
+            //backup component processes
+            backupProcess(vspId, activeVersion, componentEntity.getId(), componentName,
+                componentProcesses, processArtifact);
+            if (CollectionUtils.isNotEmpty(nics)) {
+                Map<String, String> nicsQustanniare = new HashMap<>();
+                nics.forEach(nicEntity -> {
+                    NicEntity nic = nicDao.get(new NicEntity(vspId, activeVersion, componentEntity.getId(),
+                        nicEntity.getId()));
+                    NicEntity nicQuestionnaire = nicDao.getQuestionnaireData(vspId, activeVersion,
+                        componentEntity.getId(), nicEntity.getId());
+
+                    nicsQustanniare
+                        .put(nicEntity.getNicCompositionData().getName(),
+                            nicQuestionnaire.getQuestionnaireData());
+                });
+                componentNicsQustanniare.put(componentName, nicsQustanniare);
+            }
+        });
+    }
+
+    private static void backupProcess(String vspId, Version activeVersion, String componentId,
+                               String componentName, Map<String,
+        Collection<ProcessEntity>> processes,
+                               Map<String, ProcessEntity> processArtifact) {
+        Collection<ProcessEntity> processList = vendorSoftwareProductDao.listProcesses(vspId,
+            activeVersion, componentId);
+        if (!processList.isEmpty()) {
+            processes.put(componentName, processList);
+            processList.forEach(process -> {
+                //ProcessArtifactEntity artifact = vendorSoftwareProductDao.getProcessArtifact(vspId,
+                //    activeVersion, componentId, process.getId());
+                ProcessEntity artifact =
+                    processDao.get(new ProcessEntity(vspId, activeVersion, componentId, process.getId()));
+                if (artifact.getArtifact() != null) {
+                    processArtifact.put(process.getId(), artifact);
+                }
+            });
+        }
+    }
+
+    public static void retainComponentQuestionnaireData(String vspId, Version activeVersion,
+                                                  Map<String, String> componentsQustanniare,
+                                                  Map<String, Map<String, String>>
+                                                      componentNicsQustanniare,
+                                                  Map<String, Collection<ComponentMonitoringUploadEntity>> componentMibList,
+                                                  Map<String, Collection<ProcessEntity>> processes,
+                                                  Map<String, ProcessEntity> processArtifact) {
+        //VSP processes
+        restoreProcess(vspId, activeVersion, GENERAL_COMPONENT_ID, GENERAL_COMPONENT_ID, processes,
+            processArtifact);
+        Collection<ComponentEntity>
+            components = vendorSoftwareProductDao.listComponents(vspId, activeVersion);
+        components.forEach(componentEntity -> {
+            String componentName = componentEntity.getComponentCompositionData().getName();
+            if (componentsQustanniare.containsKey(componentName)) {
+                componentDao.updateQuestionnaireData(vspId, activeVersion,
+                    componentEntity.getId(),
+                    componentsQustanniare.get(componentEntity.getComponentCompositionData()
+                        .getName()));
+                if (componentNicsQustanniare.containsKey(componentName)) {
+                    Map<String, String> nicsQustanniare = componentNicsQustanniare.get(componentName);
+                    Collection<NicEntity>
+                        nics =
+                        nicDao.list(new NicEntity(vspId, activeVersion, componentEntity.getId(), null));
+                    nics.forEach(nicEntity -> {
+                        if (nicsQustanniare.containsKey(nicEntity.getNicCompositionData().getName())) {
+                            nicDao.updateQuestionnaireData(vspId, activeVersion,
+                                componentEntity.getId(), nicEntity.getId(),
+                                nicsQustanniare.get(nicEntity.getNicCompositionData().getName()));
+                        }
+                    });
+                }
+                //MIB //todo add for VES_EVENTS
+                if (componentMibList.containsKey(componentName)) {
+                    Collection<ComponentMonitoringUploadEntity> mibList =
+                        componentMibList.get(componentName);
+                    mibList.forEach(mib -> {
+                        mib.setComponentId(componentEntity.getId());
+                        componentArtifactDao.create(mib);
+                    });
+                }
+                //VFC processes
+                restoreProcess(vspId, activeVersion, componentEntity.getId(), componentName, processes,
+                    processArtifact);
+            }
+        });
+    }
+
+    private static void restoreProcess(String vspId, Version activeVersion, String componentId,
+                                String componentName,
+                                Map<String, Collection<ProcessEntity>> processes,
+                                Map<String, ProcessEntity> processArtifact) {
+        if (processes.containsKey(componentName)) {
+            Collection<ProcessEntity> processList = processes.get(componentName);
+            processList.forEach(process -> {
+                //Reatin VFC process
+                if (!GENERAL_COMPONENT_ID.equals(componentId) && processArtifact.containsKey(process.getId
+                    ())) {
+                    ProcessEntity artifact = processArtifact.get(process.getId());
+                    artifact.setComponentId(componentId);
+                    UniqueValueUtil.createUniqueValue(PROCESS_NAME, vspId, activeVersion.toString(),
+                        componentId, process.getName());
+                    vendorSoftwareProductDao.createProcess(artifact);
+                }
+            });
+        }
+    }
+
+    public static void deleteUploadDataAndContent(String vspId, Version version) {
+        //fixme change this when more tables are zusammenized
+        vendorSoftwareProductDao.deleteUploadData(vspId, version);
+    }
+
+    public static void saveUploadData(String vspId, Version activeVersion, InputStream uploadedFileData,
+                                      FileContentHandler fileContentMap, HeatStructureTree tree) {
+        Map<String, Object> manifestAsMap =
+            fileContentMap.containsFile(SdcCommon.MANIFEST_NAME) ?
+            (Map<String, Object>) JsonUtil.json2Object(fileContentMap.getFileContent(
+                SdcCommon.MANIFEST_NAME), Map.class)
+            : new HashMap<>();
+
+        UploadData uploadData = new UploadData();
+        uploadData.setContentData(ByteBuffer.wrap(FileUtils.toByteArray(uploadedFileData)));
+        uploadData.setValidationDataStructure(new ValidationStructureList(tree));
+        uploadData.setPackageName(Objects.isNull(manifestAsMap.get("name")) ? null :
+            (String) manifestAsMap.get("name"));
+        uploadData.setPackageVersion(Objects.isNull(manifestAsMap.get("version")) ? null :
+            (String) manifestAsMap.get("version"));
+        orchestrationTemplateDataDao.updateOrchestrationTemplateData(vspId, uploadData);
+    }
+
+    public static void saveServiceModel(String vspId,
+                                        Version version,
+                                        ToscaServiceModel serviceModelToExtract,
+                                        ToscaServiceModel serviceModelToStore){
+        if (serviceModelToExtract != null) {
+            serviceModelDao.storeServiceModel(vspId, version, serviceModelToStore);
+            //Extracting the compostion data from the output service model of the first phase of
+            // translation
+            compositionEntityDataManager.saveCompositionData(vspId, version,
+                compositionDataExtractor.extractServiceCompositionData(serviceModelToExtract));
+//            OrchestrationUtil.retainComponentQuestionnaireData(vspId, version, componentsQuestionnaire,
+//                componentNicsQuestionnaire, componentMibList, processes, processArtifact);
+        }
+    }
+
+    public static HeatStructureTree createHeatTree(FileContentHandler fileContentMap,
+                                                   Map<String, List<ErrorMessage>> validationErrors){
+        HeatTreeManager heatTreeManager = HeatTreeManagerUtil.initHeatTreeManager(fileContentMap);
+        heatTreeManager.createTree();
+        heatTreeManager.addErrors(validationErrors);
+        return heatTreeManager.getTree();
+    }
+
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/CSARConstants.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/CSARConstants.java
new file mode 100644 (file)
index 0000000..0d204ef
--- /dev/null
@@ -0,0 +1,18 @@
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar;
+
+import com.google.common.collect.ImmutableSet;
+import static com.google.common.collect.ImmutableSet.of;
+public class CSARConstants {
+
+    public static final ImmutableSet<String> ELIGBLE_FOLDERS = of("Artifacts/","Definitions/",
+            "Licenses/", "TOSCA-Metadata/");
+
+    public static final String MAIN_SERVICE_TEMPLATE_MF_FILE_NAME = "MainServiceTemplate.mf";
+    public static final String MAIN_SERVICE_TEMPLATE_YAML_FILE_NAME = "MainServiceTemplate.yaml";
+    public static final ImmutableSet<String> ELIGIBLE_FILES =
+            of(MAIN_SERVICE_TEMPLATE_MF_FILE_NAME,MAIN_SERVICE_TEMPLATE_YAML_FILE_NAME);
+
+    public static final String METADATA_MF_ATTRIBUTE = "metadata";
+    public static final String SOURCE_MF_ATTRIBUTE = "source";
+    public static final String SEPERATOR_MF_ATTRIBUTE = ":";
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/OnboardingManifest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/OnboardingManifest.java
new file mode 100644 (file)
index 0000000..d88d883
--- /dev/null
@@ -0,0 +1,141 @@
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import org.apache.commons.lang.StringUtils;
+import org.openecomp.sdc.common.errors.Messages;
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerFactory;
+
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+
+import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters;
+import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.CSARConstants.*;
+
+public class OnboardingManifest {
+    private static final Logger logger = LoggerFactory.getLogger(OnboardingManifest.class);
+    private Map<String, String> metadata;
+    private List<String> sources;
+    private List<String> errors;
+    private State state;
+    private enum State {
+        Start, ProcessMetadata, ProcessSources, Error
+    }
+
+    public OnboardingManifest(InputStream is) {
+        errors = new ArrayList<>();
+        sources = new ArrayList<>();
+        metadata = new HashMap<>();
+        parseManifest(is);
+    }
+
+    private void parseManifest(InputStream is) {
+        try {
+            ImmutableList<String> lines = readAllLines(is);
+            state = State.Start;
+
+            for (String line : lines) {
+                line = line.trim();
+                if (!StringUtils.isEmpty(line.trim())) {
+                    state = processLine(state, line);
+                }
+            }
+            if (errors.isEmpty()) {
+                if (metadata.isEmpty()) {
+                    errors.add(Messages.MANIFEST_NO_METADATA.getErrorMessage());
+                }
+                if (sources.isEmpty()) {
+                    errors.add(Messages.MANIFEST_NO_SOURCES.getErrorMessage());
+                }
+            }
+        } catch (IOException e){
+            logger.error(e.getMessage(),e);
+            errors.add(Messages.MANIFEST_PARSER_INTERNAL.getErrorMessage());
+        }
+    }
+
+    private State processLine(State state, String line) {
+        switch (state) {
+            case Start:
+                if (line.trim().equals(METADATA_MF_ATTRIBUTE + SEPERATOR_MF_ATTRIBUTE)) {
+                    state = State.ProcessMetadata;
+                } else {
+                    reportError(line);
+                }
+                break;
+            case ProcessMetadata:
+                String[] metaSplit = line.split(SEPERATOR_MF_ATTRIBUTE);
+                if (metaSplit.length < 2){
+                    reportError(line);
+                    break;
+                }
+                if (!metaSplit[0].equals(SOURCE_MF_ATTRIBUTE)){
+                    String value = line.replace(metaSplit[0] + SEPERATOR_MF_ATTRIBUTE, "").trim();
+                    metadata.put(metaSplit[0],value);
+                } else {
+                    state = State.ProcessSources;
+                    processSourceLine(line);
+                }
+                break;
+            case ProcessSources:
+                processSourceLine(line);
+
+                break;
+            case Error:
+                break;
+
+        } return state;
+    }
+
+    private void processSourceLine(String line) {
+        if (line.startsWith(SOURCE_MF_ATTRIBUTE+SEPERATOR_MF_ATTRIBUTE)){
+            String value = line.replaceAll(SOURCE_MF_ATTRIBUTE + SEPERATOR_MF_ATTRIBUTE, "").trim();
+            sources.add(value);
+        }else {
+            reportError(line);
+        }
+    }
+
+    private void reportError(String line) {
+        errors.add(getErrorWithParameters(Messages.MANIFEST_INVALID_LINE.getErrorMessage(), line));
+        state = State.Error;
+    }
+
+    private ImmutableList<String> readAllLines(InputStream is) throws IOException {
+        ImmutableList.Builder<String> builder = ImmutableList.<String> builder();
+        try (Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8.newDecoder());
+             BufferedReader bufferedReader = new BufferedReader(reader);) {
+            for (; ; ) {
+                String line = bufferedReader.readLine();
+                if (line == null)
+                    break;
+                builder.add(line);
+            }
+        }
+        return builder.build();
+    }
+
+    public Map<String, String> getMetadata() {
+        if (!isValid()){
+            return Collections.EMPTY_MAP;
+        }
+        return ImmutableMap.copyOf(metadata);
+    }
+
+    public List<String> getSources() {
+        if (!isValid()){
+            return Collections.EMPTY_LIST;
+        }
+        return ImmutableList.copyOf(sources);
+    }
+
+    public List<String> getErrors() {
+        return  ImmutableList.copyOf(errors);
+    }
+
+    public boolean isValid() {
+        return errors.isEmpty();
+    }
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationProcessFactory.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationProcessFactory.java
new file mode 100644 (file)
index 0000000..db43e00
--- /dev/null
@@ -0,0 +1,64 @@
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process;
+
+import org.openecomp.config.api.Configuration;
+import org.openecomp.config.api.ConfigurationManager;
+import org.openecomp.core.utilities.CommonMethods;
+import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
+import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
+import org.openecomp.sdc.vendorsoftwareproduct.types.ConfigConstants;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.ConcurrentHashMap;
+
+import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationUtil.ORCHESTRATION_CONFIG_NAMESPACE;
+public class OrchestrationProcessFactory {
+
+  private static final String confFile = "config-orchestration.json";
+  private static Map<String, ImplementationConfiguration> processImplMap;
+
+  static {
+    Configuration config = ConfigurationManager.lookup();
+    processImplMap = new ConcurrentHashMap<>(config.populateMap(ORCHESTRATION_CONFIG_NAMESPACE,
+        ConfigConstants.PROCESS_IMPL_KEY, ImplementationConfiguration.class));
+
+  }
+
+  public static Optional<OrchestrationTemplateProcessHandler> getInstance(String filePrefix) {
+    filePrefix = filePrefix == null ? null : filePrefix.toLowerCase().trim();
+    if (filePrefix == null) {
+      return Optional.empty();
+    }
+
+    OnboardingTypesEnum onboardingTypesEnum = OnboardingTypesEnum.getOnboardingTypesEnum(filePrefix);
+    if (onboardingTypesEnum == null) {
+      return Optional.empty();
+    }
+
+    try {
+      return Optional.of(createInstance(processImplMap.get(onboardingTypesEnum.toString())));
+    }catch (Exception e){
+      return Optional.empty();
+    }
+  }
+
+  private static Map<String, String> getOrchestrationImplMap(){
+    try {
+      return FileUtils.readViaInputStream(confFile,
+              stream -> JsonUtil.json2Object(stream, Map.class));
+    }catch (Exception e){
+      return new HashMap<>();
+    }
+  }
+
+  private static OrchestrationTemplateProcessHandler createInstance(ImplementationConfiguration implClass)
+      throws Exception {
+    OrchestrationTemplateProcessHandler handler;
+    handler =
+        CommonMethods.newInstance(implClass.getImplementationClass(), OrchestrationTemplateProcessHandler.class);
+    return handler;
+  }
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessCsarHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessCsarHandler.java
new file mode 100644 (file)
index 0000000..4866d93
--- /dev/null
@@ -0,0 +1,133 @@
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process;
+
+import org.apache.commons.collections4.MapUtils;
+import org.openecomp.core.converter.ToscaConverter;
+import org.openecomp.core.impl.ToscaConverterImpl;
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
+import org.openecomp.core.validation.util.MessageContainerUtil;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.datatypes.error.ErrorLevel;
+import org.openecomp.sdc.datatypes.error.ErrorMessage;
+import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree;
+import org.openecomp.sdc.heat.services.tree.ToscaTreeManager;
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerFactory;
+import org.openecomp.sdc.logging.messages.AuditMessages;
+import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
+import org.openecomp.sdc.vendorsoftwareproduct.factory.CandidateServiceFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationUtil;
+import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService;
+import org.openecomp.sdc.vendorsoftwareproduct.types.OrchestrationTemplateActionResponse;
+import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+public class OrchestrationTemplateProcessCsarHandler implements OrchestrationTemplateProcessHandler {
+
+  private static Logger logger =
+      LoggerFactory.getLogger(OrchestrationTemplateProcessCsarHandler.class);
+  private ToscaConverter toscaConverter = new ToscaConverterImpl();
+  private CandidateService candidateService =
+      CandidateServiceFactory.getInstance().createInterface();
+  ToscaTreeManager toscaTreeManager = new ToscaTreeManager();
+
+  @Override
+  public OrchestrationTemplateActionResponse process(VspDetails vspDetails,
+                                                     OrchestrationTemplateCandidateData candidateData,
+                                                     String user) {
+    String vspId = vspDetails.getId();
+    Version version = vspDetails.getVersion();
+    logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.CSAR_VALIDATION_STARTED + vspId);
+    OrchestrationTemplateActionResponse response = new OrchestrationTemplateActionResponse();
+    UploadFileResponse uploadFileResponse = new UploadFileResponse();
+    Optional<FileContentHandler> fileContent =
+        OrchestrationUtil
+            .getFileContentMap(
+                OnboardingTypesEnum.CSAR, uploadFileResponse, candidateData.getContentData().array());
+
+    if(fileContent.isPresent()){
+      try {
+        FileContentHandler fileContentHandler = fileContent.get();
+        processCsar(vspId, version, fileContentHandler, candidateData, response);
+      } catch (CoreException e){
+        logger.error(e.getMessage());
+        throw e;
+      } catch (Exception e){
+        logger.error(e.getMessage());
+      }
+    }
+
+    return response;
+  }
+
+  private void processCsar(String vspId, Version version,
+                           FileContentHandler fileContentHandler,
+                           OrchestrationTemplateCandidateData candidateData,
+                           OrchestrationTemplateActionResponse response) throws IOException {
+
+
+    response.setFileNames(new ArrayList<>(fileContentHandler.getFileList()));
+    Map<String, List<ErrorMessage>> errors = validateCsar(fileContentHandler, response);
+    if(!isValid(errors)){
+      return;
+    }
+
+    HeatStructureTree tree = toscaTreeManager.getTree();
+
+    Map<String, String> componentsQuestionnaire = new HashMap<>();
+    Map<String, Map<String, String>> componentNicsQuestionnaire = new HashMap<>();
+    Map<String, Collection<ComponentMonitoringUploadEntity>> componentMibList = new HashMap<>();
+    Map<String, Collection<ProcessEntity>> processes = new HashMap<>();
+    Map<String, ProcessEntity> processArtifact = new HashMap<>();
+
+    OrchestrationUtil.backupComponentsQuestionnaireBeforeDelete(vspId,
+        version, componentsQuestionnaire,
+        componentNicsQuestionnaire, componentMibList, processes, processArtifact);
+
+    Optional<ByteArrayInputStream> zipByteArrayInputStream = candidateService
+        .fetchZipFileByteArrayInputStream(vspId, candidateData, null, OnboardingTypesEnum.CSAR, errors);
+
+    OrchestrationUtil.deleteUploadDataAndContent(vspId, version);
+    OrchestrationUtil.saveUploadData(
+        vspId, version, zipByteArrayInputStream.get(), fileContentHandler, tree);
+
+    ToscaServiceModel toscaServiceModel = toscaConverter.convert(fileContentHandler);
+    OrchestrationUtil.saveServiceModel(vspId, version, toscaServiceModel, toscaServiceModel);
+
+  }
+
+  private void addFiles(FileContentHandler fileContentHandler){
+    for(Map.Entry<String, byte[]> fileEntry : fileContentHandler.getFiles().entrySet()){
+      toscaTreeManager.addFile(fileEntry.getKey(), fileEntry.getValue());
+    }
+  }
+
+  private Map<String, List<ErrorMessage>> validateCsar(FileContentHandler fileContentHandler,
+                                         OrchestrationTemplateActionResponse response){
+
+
+    Map<String, List<ErrorMessage>> errors = new HashMap<>();
+    addFiles(fileContentHandler);
+    toscaTreeManager.createTree();
+    toscaTreeManager.addErrors(errors);
+    //todo - add tosca validation here to the existing validation framework
+    return errors;
+  }
+
+  private boolean isValid(Map<String, List<ErrorMessage>> errors){
+    return MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, errors));
+  }
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessHandler.java
new file mode 100644 (file)
index 0000000..8b513b4
--- /dev/null
@@ -0,0 +1,12 @@
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process;
+
+
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
+import org.openecomp.sdc.vendorsoftwareproduct.types.OrchestrationTemplateActionResponse;
+
+public interface OrchestrationTemplateProcessHandler {
+  OrchestrationTemplateActionResponse process(VspDetails vspDetails,
+                                              OrchestrationTemplateCandidateData candidateData,
+                                              String user);
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessZipHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessZipHandler.java
new file mode 100644 (file)
index 0000000..cceacd4
--- /dev/null
@@ -0,0 +1,184 @@
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
+import org.openecomp.core.model.dao.ServiceModelDao;
+import org.openecomp.core.model.dao.ServiceModelDaoFactory;
+import org.openecomp.core.translator.datatypes.TranslatorOutput;
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
+import org.openecomp.core.validation.util.MessageContainerUtil;
+import org.openecomp.sdc.activityLog.ActivityLogManager;
+import org.openecomp.sdc.activityLog.ActivityLogManagerFactory;
+import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity;
+import org.openecomp.sdc.common.errors.Messages;
+import org.openecomp.sdc.common.utils.SdcCommon;
+import org.openecomp.sdc.datatypes.error.ErrorLevel;
+import org.openecomp.sdc.datatypes.error.ErrorMessage;
+import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree;
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerFactory;
+import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
+import org.openecomp.sdc.logging.messages.AuditMessages;
+import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
+import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
+import org.openecomp.sdc.validation.util.ValidationManagerUtil;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
+import org.openecomp.sdc.vendorsoftwareproduct.factory.CandidateServiceFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.factory.CompositionDataExtractorFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.factory.CompositionEntityDataManagerFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationUtil;
+import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionDataExtractor;
+import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
+import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService;
+import org.openecomp.sdc.vendorsoftwareproduct.types.OrchestrationTemplateActionResponse;
+import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
+import org.openecomp.sdc.vendorsoftwareproduct.types.candidateheat.FilesDataStructure;
+import org.openecomp.sdc.vendorsoftwareproduct.utils.VendorSoftwareProductUtils;
+import org.openecomp.sdc.versioning.dao.types.Version;
+import org.openecomp.sdcrests.activitylog.types.ActivityType;
+
+import java.io.ByteArrayInputStream;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+import static org.openecomp.sdc.logging.messages.AuditMessages.HEAT_VALIDATION_ERROR;
+
+public class OrchestrationTemplateProcessZipHandler implements OrchestrationTemplateProcessHandler {
+  Logger logger = LoggerFactory.getLogger(OrchestrationTemplateProcessZipHandler.class);
+  private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
+  private CandidateService candidateService =
+      CandidateServiceFactory.getInstance().createInterface();
+  private ServiceModelDao serviceModelDao = ServiceModelDaoFactory.getInstance().createInterface();
+  private CompositionEntityDataManager compositionEntityDataManager =
+      CompositionEntityDataManagerFactory.getInstance().createInterface();
+  private CompositionDataExtractor compositionDataExtractor =
+      CompositionDataExtractorFactory.getInstance().createInterface();
+  private ActivityLogManager activityLogManager =
+      ActivityLogManagerFactory.getInstance().createInterface();
+
+
+  public OrchestrationTemplateProcessZipHandler(){}
+
+  public OrchestrationTemplateActionResponse process(VspDetails vspDetails,
+                                                     OrchestrationTemplateCandidateData candidateData,
+                                                     String user) {
+    String vspId = vspDetails.getId();
+    Version version = vspDetails.getVersion();
+    logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_VALIDATION_STARTED +
+        vspId);
+    OrchestrationTemplateActionResponse response = new OrchestrationTemplateActionResponse();
+    UploadFileResponse uploadFileResponse = new UploadFileResponse();
+    Optional<FileContentHandler> fileContent =
+        OrchestrationUtil
+            .getFileContentMap(
+                OnboardingTypesEnum.ZIP, uploadFileResponse, candidateData.getContentData().array());
+    if (!fileContent.isPresent()) {
+      response.addStructureErrors(uploadFileResponse.getErrors());
+      mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
+      response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId,
+          HEAT_VALIDATION_ERROR));
+      return response;
+    }
+
+    Map<String, List<ErrorMessage>> uploadErrors = uploadFileResponse.getErrors();
+    FileContentHandler fileContentMap = fileContent.get();
+    FilesDataStructure structure =
+        JsonUtil.json2Object(candidateData.getFilesDataStructure(), FilesDataStructure.class);
+
+    if (CollectionUtils.isNotEmpty(structure.getUnassigned())) {
+      response.addErrorMessageToMap(SdcCommon.UPLOAD_FILE,
+          Messages.FOUND_UNASSIGNED_FILES.getErrorMessage(), ErrorLevel.ERROR);
+
+      mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
+      response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId,
+          HEAT_VALIDATION_ERROR));
+      return response;
+    }
+
+
+    String manifest = candidateService.createManifest(vspDetails, structure);
+    fileContentMap.addFile(SdcCommon.MANIFEST_NAME, manifest.getBytes());
+
+    Optional<ByteArrayInputStream> zipByteArrayInputStream = candidateService
+        .fetchZipFileByteArrayInputStream(
+            vspId, candidateData, manifest, OnboardingTypesEnum.ZIP, uploadErrors);
+    if (!zipByteArrayInputStream.isPresent()) {
+      response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId,
+          HEAT_VALIDATION_ERROR));
+      return response;
+    }
+
+    HeatStructureTree tree = createAndValidateHeatTree(response, fileContentMap);
+
+    Map<String, String> componentsQuestionnaire = new HashMap<>();
+    Map<String, Map<String, String>> componentNicsQuestionnaire = new HashMap<>();
+    Map<String, Collection<ComponentMonitoringUploadEntity>> componentMibList = new HashMap<>();
+    Map<String, Collection<ProcessEntity>> processes = new HashMap<>();
+    Map<String, ProcessEntity> processArtifact = new HashMap<>();
+
+    OrchestrationUtil.backupComponentsQuestionnaireBeforeDelete(vspId,
+        version, componentsQuestionnaire,
+        componentNicsQuestionnaire, componentMibList, processes, processArtifact);
+
+    OrchestrationUtil.deleteUploadDataAndContent(vspId, version);
+    OrchestrationUtil.saveUploadData(vspId, version, zipByteArrayInputStream.get(), fileContentMap,
+        tree);
+
+    response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId,
+        HEAT_VALIDATION_ERROR));
+    if ( MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, response.getErrors
+        ()))) {
+      logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_VALIDATION_COMPLETED + vspId);
+    }
+
+    logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_TRANSLATION_STARTED + vspId);
+
+    TranslatorOutput translatorOutput =
+        HeatToToscaUtil.loadAndTranslateTemplateData(fileContentMap);
+
+    ToscaServiceModel toscaServiceModel = translatorOutput.getToscaServiceModel();
+    OrchestrationUtil.saveServiceModel(vspId, version, translatorOutput
+        .getNonUnifiedToscaServiceModel(), toscaServiceModel);
+    OrchestrationUtil.retainComponentQuestionnaireData(vspId, version, componentsQuestionnaire,
+        componentNicsQuestionnaire, componentMibList, processes, processArtifact);
+
+    logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_TRANSLATION_COMPLETED + vspId);
+    uploadFileResponse.addStructureErrors(uploadErrors);
+
+    ActivityLogEntity activityLogEntity =
+        new ActivityLogEntity(vspId, String.valueOf(version.getMajor() + 1),
+            ActivityType.UPLOAD_HEAT.toString(), user, true, "", "");
+    activityLogManager.addActionLog(activityLogEntity, user);
+
+    mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
+    return response;
+  }
+
+  private HeatStructureTree createAndValidateHeatTree(OrchestrationTemplateActionResponse response,
+                                                      FileContentHandler fileContentMap) {
+    VendorSoftwareProductUtils.addFileNamesToUploadFileResponse(fileContentMap, response);
+    Map<String, List<ErrorMessage>> validationErrors =
+        ValidationManagerUtil.initValidationManager(fileContentMap).validate();
+    response.getErrors().putAll(validationErrors);
+
+    return OrchestrationUtil.createHeatTree(fileContentMap, validationErrors);
+  }
+
+  private void printAuditForErrors(List<ErrorMessage> errorList, String vspId, String auditType) {
+
+    errorList.forEach(errorMessage -> {
+      if (errorMessage.getLevel().equals(ErrorLevel.ERROR)) {
+        logger.audit(AuditMessages.AUDIT_MSG + String.format(auditType, errorMessage.getMessage(),
+            vspId));
+      }
+    });
+  }
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/ConfigConstants.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/ConfigConstants.java
new file mode 100644 (file)
index 0000000..85c6fcb
--- /dev/null
@@ -0,0 +1,6 @@
+package org.openecomp.sdc.vendorsoftwareproduct.types;
+
+public class ConfigConstants {
+  public static final String NAMESPACE = "Orchestration";
+  public static final String PROCESS_IMPL_KEY =  "process_impl";
+}
index 99f3fa1..ca0eed2 100644 (file)
@@ -21,6 +21,7 @@
 package org.openecomp.sdc.vendorsoftwareproduct.types;
 
 
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.datatypes.error.ErrorLevel;
 import org.openecomp.sdc.datatypes.error.ErrorMessage;
 
@@ -35,6 +36,8 @@ import java.util.Map;
 public class UploadFileResponse {
   private Map<String, List<ErrorMessage>> errors = new HashMap<>();
   private UploadFileStatus status = UploadFileStatus.Success;
+  private OnboardingTypesEnum onboardingType;
+  private String networkPackageName;
 
   public UploadFileStatus getStatus() {
     return status;
@@ -44,6 +47,22 @@ public class UploadFileResponse {
     this.status = status;
   }
 
+  public OnboardingTypesEnum getOnboardingType() {
+    return onboardingType;
+  }
+
+  public void setOnboardingType(OnboardingTypesEnum onboardingTypesEnum) {
+    this.onboardingType = onboardingTypesEnum;
+  }
+
+  public String getNetworkPackageName() {
+    return networkPackageName;
+  }
+
+  public void setNetworkPackageName(String networkPackageName) {
+    this.networkPackageName = networkPackageName;
+  }
+
   /**
    * Add structure error.
    *
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;
-    }
-  }
-
-
 }
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/resources/config-orchestration.json b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/resources/config-orchestration.json
new file mode 100644 (file)
index 0000000..9193b81
--- /dev/null
@@ -0,0 +1,26 @@
+{
+  "orchestration_impl": {
+    "zip": {
+      "enable": true,
+      "implementationClass": "org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationTemplateZipHandler"
+    },
+    "csar": {
+      "enable": true,
+      "implementationClass": "org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationTemplateCSARHandler"
+    }
+  },
+  "process_impl": {
+    "zip" : {
+      "enzble": true,
+      "implementationClass" : "org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process.OrchestrationTemplateProcessZipHandler"
+    },
+    "csar": {
+      "enable": true,
+      "implementationClass": "org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process.OrchestrationTemplateProcessCsarHandler"
+    }
+  },
+
+  "_config":{
+    "namespace": "orchestration"
+  }
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/resources/orchestrationConfiguration.json b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/resources/orchestrationConfiguration.json
new file mode 100644 (file)
index 0000000..7509094
--- /dev/null
@@ -0,0 +1,3 @@
+{
+  "zip" :"org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process.orchestrationTemplateProcessZipHandler"
+}
\ No newline at end of file
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 948d46b..3e42a23 100644 (file)
@@ -48,7 +48,6 @@ import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.Com
 import org.openecomp.sdc.versioning.dao.types.Version;
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
 
 import java.io.InputStream;
 import java.util.List;
@@ -112,7 +111,7 @@ public class QuestionnaireDataServiceTest {
   public void testQuestionnaireDataAfterIllegalUpload() {
     InputStream zipInputStream = uploadFileTest.getZipInputStream("/missingYml");
     UploadFileResponse uploadFileResponse = candidateManager
-        .upload(vspId, VERSION, zipInputStream, USER1);
+        .upload(vspId, VERSION, zipInputStream, USER1, "zip", "missingYml");
 
     InformationArtifactData informationArtifactData = questionnaireDataService
         .generateQuestionnaireDataForInformationArtifact(vspId, vspActiveVersion);
@@ -124,7 +123,7 @@ public class QuestionnaireDataServiceTest {
     InputStream zipInputStream = uploadFileTest.getZipInputStream(filePath);
     UploadFileResponse uploadFileResponse = candidateManager
         .upload(vspId, VERSION,
-            zipInputStream, USER1);
+            zipInputStream, USER1,"zip", "file");
     candidateManager.process(vspId, VERSION, USER1);
 
     Assert.assertTrue(MapUtils.isEmpty(
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 e6d06f2..252e152 100644 (file)
@@ -6,6 +6,7 @@ import org.mockito.MockitoAnnotations;
 import org.openecomp.core.model.dao.ServiceModelDao;
 import org.openecomp.core.model.types.ServiceElement;
 import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.datatypes.error.ErrorLevel;
 import org.openecomp.sdc.healing.api.HealingManager;
 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
@@ -23,7 +24,6 @@ import org.openecomp.sdc.vendorsoftwareproduct.utils.ZipFileUtils;
 import org.openecomp.sdc.versioning.dao.types.Version;
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -90,7 +90,7 @@ public class OrchestrationTemplateCandidateManagerImplTest {
 
     doReturn("{}").when(candidateServiceMock).createManifest(anyObject(), anyObject());
     doReturn(Optional.empty()).when(candidateServiceMock)
-        .fetchZipFileByteArrayInputStream(anyObject(), anyObject(), anyObject(), anyObject());
+        .fetchZipFileByteArrayInputStream(anyObject(), anyObject(), anyObject(), OnboardingTypesEnum.ZIP, anyObject());
 
 
     OrchestrationTemplateActionResponse response =
@@ -123,7 +123,7 @@ public class OrchestrationTemplateCandidateManagerImplTest {
 
     UploadFileResponse uploadFileResponse = candidateManager
         .upload(VSP_ID, VERSION01, new ZipFileUtils().getZipInputStream("/legalUploadWithWarning"),
-            USER1);
+            USER1, "zip", "legalUploadWithWarning");
     Assert.assertTrue(uploadFileResponse.getStatus() == UploadFileStatus.Success);
     Assert.assertTrue(
         uploadFileResponse.getErrors().get("uploadFile").get(0).getLevel() == ErrorLevel.WARNING);
@@ -136,7 +136,7 @@ public class OrchestrationTemplateCandidateManagerImplTest {
   public void testUploadWithManifest() {
     UploadFileResponse uploadFileResponse = candidateManager
         .upload(VSP_ID, VERSION01, new ZipFileUtils().getZipInputStream("/legalUploadWithWarning"),
-            USER1);
+            USER1, "zip", "legalUploadWithWarning");
     Assert.assertTrue(uploadFileResponse.getStatus() == UploadFileStatus.Success);
     Assert.assertTrue(
         uploadFileResponse.getErrors().get("uploadFile").get(0).getLevel() == ErrorLevel.WARNING);
index 2fc4385..e0e00f8 100644 (file)
@@ -39,7 +39,6 @@ import org.openecomp.sdc.common.errors.CoreException;
 import org.openecomp.sdc.common.errors.ErrorCategory;
 import org.openecomp.sdc.common.errors.ErrorCode;
 import org.openecomp.sdc.common.errors.Messages;
-import org.openecomp.sdc.common.errors.ValidationErrorBuilder;
 import org.openecomp.sdc.healing.api.HealingManager;
 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
 import org.openecomp.sdc.tosca.datatypes.model.CapabilityDefinition;
@@ -54,14 +53,10 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.PackageInfoDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.PackageInfo;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.UploadDataEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspQuestionnaireEntity;
-import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes;
 import org.openecomp.sdc.vendorsoftwareproduct.impl.mock.EnrichmentManagerFactoryImpl;
 import org.openecomp.sdc.vendorsoftwareproduct.informationArtifact.InformationArtifactGenerator;
 import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
@@ -92,7 +87,6 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
@@ -169,10 +163,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 +185,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 +213,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 +237,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 +268,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 +291,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 +315,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 +341,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");
     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 +394,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 +418,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 +458,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 +480,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 +546,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 +570,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 +584,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 +607,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 +627,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 +640,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 +653,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, "zip", "missingYml");
 
     Assert.assertEquals(uploadFileResponse.getErrors().size(), 0);
   }
@@ -671,8 +665,8 @@ public class VendorSoftwareProductManagerImplTest {
 
     try {
       candidateManager
-          .upload(VSP_ID, VERSION01,
-              url.openStream(), USER1);
+              .upload(VSP_ID, VERSION01,
+                      url.openStream(), USER1, "zip", "notZipFile");
       candidateManager.process(VSP_ID, VERSION01, USER1);
     } catch (Exception ce) {
       Assert.assertEquals(ce.getMessage(), Messages.CREATE_MANIFEST_FROM_ZIP.getErrorMessage());
@@ -680,118 +674,18 @@ public class VendorSoftwareProductManagerImplTest {
 
     verify(activityLogManagerMock, never()).addActionLog(any(ActivityLogEntity.class), eq(USER1));
   }
-/*
-  @Test
-  public void testEnrichModelInSubmit() {
-    UniqueValueUtil
-        .deleteUniqueValue(VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME,
-            "VSP_syb");
-    VspDetails vspDetails = vendorSoftwareProductManager.createVsp(
-        createVspDetails(null, null, "VSP_syb", "Test-vsp_syb", "vendorName", "vlm1Id", "icon",
-            "category", "subCategory", "456", null), USER1);
-    String id = vspDetails.getId();
-
-    //upload file
-    InputStream zis = getFileInputStream("/vspmanager/zips/fullComposition.zip");
-    candidateManager.upload(id, VERSION01, zis, USER1);
-    OrchestrationTemplateActionResponse uploadFileResponse =
-        candidateManager.process(id, VERSION01, USER1);
-
-    //check in
-    vendorSoftwareProductManager.checkin(id, USER1);
-    //submit
-    try {
-      ValidationResponse result = vendorSoftwareProductManager.submit(id, USER1);
-    } catch (IOException exception) {
-      Assert.fail();
-    }
-    VersionedVendorSoftwareProductInfo details =
-        vendorSoftwareProductManager.getVsp(id, null, USER1);
-    Collection<ComponentEntity> components =vendorSoftwareProductManager
-        .listComponents(id, details.getVersionInfo().getActiveVersion(), USER1);
-
-    ToscaServiceModel model =
-        (ToscaServiceModel) EnrichedServiceModelDaoFactory.getInstance().createInterface()
-            .getServiceModel(id, details.getVersionInfo().getActiveVersion());
-
-    Map<String, CapabilityDefinition> capabilities = new HashMap<>();
-    for (ComponentEntity component : components) {
-      model.getServiceTemplates().
-          entrySet().
-          stream().
-          filter(entryValue -> entryValue.getValue() != null &&
-              entryValue.getValue().getNode_types() != null &&
-              entryValue.getValue().
-                  getNode_types().
-                  containsKey(component.getComponentCompositionData().getName())).
-          forEach(entryValue -> entryValue.getValue().getNode_types().
-              values().
-              stream().
-              filter(type -> MapUtils.isNotEmpty(type.getCapabilities())).
-              forEach(type -> type.getCapabilities().
-                  entrySet().
-                  forEach(entry -> addCapability(entryValue.getKey(), capabilities, entry.getKey(),
-                      entry.getValue()))));
-
-    }
-
-    Assert.assertNotNull(capabilities);
-  }
-
-  @Test(dependsOnMethods = {"testCreatePackage"})
-  public void testEnrichedFilesDeletedOnNewUpload() throws IOException {
-    Version activeVersion;
-
-    createPackageFromUpload(VSP_ID, USER1, "/fullComposition");
-    activeVersion = vendorSoftwareProductManager.getVsp(VSP_ID, null, USER1).getVersionInfo()
-        .getActiveVersion();
-
-    List<ServiceArtifact> firstExternalArtifacts = enrichedServiceModelDaoMock
-        .getExternalArtifacts(VSP_ID, activeVersion);
-    ToscaServiceModel firstServiceModel = enrichedServiceModelDaoMock.getServiceModel(VSP_ID,
-        activeVersion);
-
-    createPackageFromUpload(VSP_ID, USER1, "/emptyComposition");
-    activeVersion = vendorSoftwareProductManager.getVsp(VSP_ID, null, USER1).getVersionInfo()
-        .getActiveVersion();
-
-    List<ServiceArtifact> secondExternalArtifacts = enrichedServiceModelDaoMock
-        .getExternalArtifacts(VSP_ID, activeVersion);
-    ToscaServiceModel secondServiceModel = enrichedServiceModelDaoMock.getServiceModel(VSP_ID,
-        activeVersion);
-
-    Assert.assertNotEquals(firstExternalArtifacts, secondExternalArtifacts);
-    Assert.assertNotEquals(firstServiceModel, secondServiceModel);
-
-  }
-
-  @Test(dependsOnMethods = {"testMibsDeletedInCsar"})
-  public void testServiceTemplatesAreDeletedInCsarOnNewUpload() throws IOException {
-    String nestedPath = "Definitions" + File.separator + "nested";
-
-    uploadFileAndProcess(VSP_ID, USER1, "/vspmanager/zips/fullCompositionNested.zip");
-    checkinSubmitCreatePackage(VSP_ID, USER1);
-    List<String> nestedFileNamesServiceTemplates =
-        getWantedFileNamesFromCsar(nestedPath);
 
-    uploadFileAndProcess(VSP_ID, USER1, "/vspmanager/zips/fullComposition.zip");
-    checkinSubmitCreatePackage(VSP_ID, USER1);
-    List<String> emptyNestedNamesList = getWantedFileNamesFromCsar(nestedPath);
-
-    Assert.assertEquals(emptyNestedNamesList.size(), 0);
-    Assert.assertNotEquals(emptyNestedNamesList.size(), nestedFileNamesServiceTemplates.size());
-  }*/
 
   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));
@@ -806,31 +700,16 @@ public class VendorSoftwareProductManagerImplTest {
 
     return fileNames;
   }
-  /*
-  //Disabled for sonar null pointer issue for componentEntities
-  private Pair<String, String> uploadMib(String vspId, String user, String filePath,
-                                         String fileName) {
-    List<ComponentEntity> componentEntities = null;
-    //(List<ComponentEntity>) vendorSoftwareProductManager.listComponents(vspId, null, user);
-    monitoringUploadsManager.upload(getFileInputStream(filePath),
-        fileName, vspId,
-        VERSION01, componentEntities.get(0).getId(), MonitoringUploadType.SNMP_POLL, user);
-    //TODO: add validate of addActionLog() func call
-
-    return new ImmutablePair<>(componentEntities.get(0).getId(),
-        componentEntities.get(0).getComponentCompositionData()
-            .getDisplayName());
-  }*/
 
   private void createPackageFromUpload(String vspId, String user, String filePath)
-      throws IOException {
+          throws IOException {
     uploadFileAndProcess(vspId, user, filePath);
     checkinSubmitCreatePackage(vspId, user);
   }
 
   private void uploadFileAndProcess(String vspId, String user, String filePath) {
     vendorSoftwareProductManager.checkout(vspId, user);
-    candidateManager.upload(vspId, VERSION01, getFileInputStream(filePath), user);
+    candidateManager.upload(vspId, VERSION01, getFileInputStream(filePath), user, "zip", "file");
     candidateManager.process(vspId, VERSION01, user);
   }
 
@@ -888,11 +767,11 @@ public class VendorSoftwareProductManagerImplTest {
 */
 
   private void testLegalUpload(String vspId, Version version, InputStream upload, String user) {
-    candidateManager.upload(vspId, VERSION01, upload, USER1);
+    candidateManager.upload(vspId, VERSION01, upload, USER1, "zip", "file");
     candidateManager.process(vspId, VERSION01, user);
 
     UploadDataEntity uploadData =
-        orchestrationTemplateDataDaoMock.getOrchestrationTemplate(vspId, version);
+            orchestrationTemplateDataDaoMock.getOrchestrationTemplate(vspId, version);
     Assert.assertNotNull(uploadData);
   }
 
@@ -914,28 +793,11 @@ 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);
   }
 
 
-  //  private void assertInfoArtifactIsInRightPathInCsar(String vspId, String zipFileName)
-//      throws IOException {
-//    ZipInputStream inputZipStream = new ZipInputStream(new FileInputStream(new File(zipFileName)));
-//    boolean isInfoArtifactInZip = false;
-//
-//    ZipEntry zipEntry;
-//    while ((zipEntry = inputZipStream.getNextEntry()) != null) {
-//      String currentEntryName = zipEntry.getName();
-//      if(currentEntryName.equals("Artifacts\\Informative\\Guide\\VSP_" +
-//          vspId + "_Information.txt")){
-//        isInfoArtifactInZip = true;
-//        break;
-//      }
-//    }
-//
-//    Assert.assertTrue(isInfoArtifactInZip);
-//  }
   static VspDetails createVspDetails(String id, Version version, String name, String desc,
                                      String vendorName, String vlm, String icon,
                                      String category, String subCategory,
@@ -969,68 +831,30 @@ public class VendorSoftwareProductManagerImplTest {
     Assert.assertEquals(actual.getFeatureGroups(), expected.getFeatureGroups());
   }
 
-
-//    @Test
-//    public void testDownloadFile() throws IOException {
-//        VspDetails expectedVsp = VSPCommon.createVspDetails(null, null, String.format("VSP-test-%s", vlm1Id), "Test-vsp", "vendorName", "vlm1Id", "icon", "category", "subCategory", "123", null);
-//        VspDetails createdVsp = vendorSoftwareProductManager.createVsp(expectedVsp, USER1);
-//
-//        id005 = createdVsp.getId();
-//        Assert.assertNotNull(id005);
-//        Assert.assertNotNull(createdVsp.getVersion());
-//
-//        try (InputStream zipInputStream = new ZipFileUtils().getZipInputStream("/legalUploadWithWarning")) {
-//
-//            UploadFileResponse uploadFileResponse = vendorSoftwareProductManager.upload(id005, zipInputStream, USER1);
-//            vendorSoftwareProductManager.process(id005, USER1);
-//            Optional<File> fileCandidate = vendorSoftwareProductManager.get(id005, USER1);
-//
-//            File latestHeatPackage = fileCandidate.get();
-//
-//            zipInputStream.reset();
-//            byte[] uploaded = IOUtils.toByteArray(zipInputStream);
-//
-//            Optional<FileContentHandler> zipContentMap = vendorSoftwareProductManager.getZipContentMap(uploadFileResponse, uploaded);
-//            FileContentHandler fileContentHandler = new FileContentHandler();
-//            if(zipContentMap.isPresent()){
-//                 fileContentHandler = zipContentMap.get();
-//            }
-//
-//            uploaded = IOUtils.toByteArray(fileContentHandler.getFiles().values());
-//
-//            byte[] downloaded;
-//            try (BufferedInputStream fileStream = new BufferedInputStream(new FileInputStream(latestHeatPackage))) {
-//                downloaded = IOUtils.toByteArray(fileStream);
-//            }
-//
-//            Assert.assertTrue(Arrays.equals(uploaded, downloaded));
-//        }
-//    }
-
-  // todo ********************** move to common **************************************
+ // todo ********************** move to common **************************************
 
   private void mockVersioning(VersionableEntityAction action) {
     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 236b7e7..dfb7409 100644 (file)
@@ -27,6 +27,7 @@ import org.mockito.MockitoAnnotations;
 import org.mockito.Spy;
 import org.openecomp.core.model.dao.ServiceModelDao;
 import org.openecomp.core.model.types.ServiceElement;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.healing.api.HealingManager;
 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao;
@@ -37,92 +38,86 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
 import org.openecomp.sdc.vendorsoftwareproduct.impl.OrchestrationTemplateCandidateManagerImpl;
 import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionDataExtractor;
 import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
-import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService;
 import org.openecomp.sdc.vendorsoftwareproduct.services.impl.filedatastructuremodule.CandidateServiceImpl;
+import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
 import org.openecomp.sdc.vendorsoftwareproduct.utils.VSPCommon;
 import org.openecomp.sdc.versioning.dao.types.Version;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
 import java.net.URL;
 import java.util.zip.ZipOutputStream;
 
 import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doReturn;
+import static org.testng.Assert.assertEquals;
 
 public class UploadFileTest {
-  private static final String USER1 = "vspTestUser1";
-
-  public static final Version VERSION01 = new Version(0, 1);
-  @Mock
-  private VendorSoftwareProductDao vendorSoftwareProductDaoMock;
-  @Mock
-  private OrchestrationTemplateDao orchestrationTemplateDataDaoMock;
-  @Spy
-  private CandidateServiceImpl candidateService;
-  @Mock
-  private HealingManager healingManagerMock;
-  @Mock
-  private CompositionDataExtractor compositionDataExtractorMock;
-  @Mock
-  private ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDaoMock;
-  @Mock
-  private CompositionEntityDataManager compositionEntityDataManagerMock;
-  @Mock
-  private VendorSoftwareProductInfoDao vspInfoDaoMock;
-
-  @InjectMocks
-  private OrchestrationTemplateCandidateManagerImpl candidateManager;
-
-  private static String vlm1Id;
-  public static String id001 = null;
-  public static String id002 = null;
-
-  public static Version activeVersion002 = null;
-
-
-  @BeforeMethod
-  public void setUp() throws Exception {
-    MockitoAnnotations.initMocks(this);
-  }
-
-  @Test
-  public void testUploadFile() {
-    VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0));
-    doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class));
-    candidateManager.upload(id001, activeVersion002, getZipInputStream("/legalUpload"), USER1);
-  }
-
-
-  private void testLegalUpload(String vspId, Version version, InputStream upload, String user) {
-    candidateManager.upload(vspId, activeVersion002, upload, user);
-
-    UploadDataEntity uploadData =
-        orchestrationTemplateDataDaoMock.getOrchestrationTemplate(vspId, version);
-
-  }
-
-  public InputStream getZipInputStream(String name) {
-    URL url = this.getClass().getResource(name);
-    File templateDir = new File(url.getFile());
-
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    ZipOutputStream zos = new ZipOutputStream(baos);
-
-    VSPCommon.zipDir(templateDir, "", zos, true);
-    try {
-      zos.close();
-    } catch (IOException e) {
-      e.printStackTrace();
+    private static final String USER1 = "vspTestUser1";
+
+    public static final Version VERSION01 = new Version(0, 1);
+    @Mock
+    private VendorSoftwareProductDao vendorSoftwareProductDaoMock;
+    @Mock
+    private OrchestrationTemplateDao orchestrationTemplateDataDaoMock;
+    @Spy
+    private CandidateServiceImpl candidateService;
+    @Mock
+    private HealingManager healingManagerMock;
+    @Mock
+    private CompositionDataExtractor compositionDataExtractorMock;
+    @Mock
+    private ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDaoMock;
+    @Mock
+    private CompositionEntityDataManager compositionEntityDataManagerMock;
+    @Mock
+    private VendorSoftwareProductInfoDao vspInfoDaoMock;
+
+    @InjectMocks
+    private OrchestrationTemplateCandidateManagerImpl candidateManager;
+
+    private static String vlm1Id;
+    public static String id001 = null;
+    public static String id002 = null;
+
+    public static Version activeVersion002 = null;
+
+
+    @BeforeMethod
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+    }
+
+    @Test
+    public void testUploadFile() {
+        VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0));
+        doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class));
+        candidateManager.upload(id001, activeVersion002, getZipInputStream("/legalUpload"), USER1, OnboardingTypesEnum.ZIP.toString(), "legalUpload");
+    }
+
+
+    private void testLegalUpload(String vspId, Version version, InputStream upload, String user) {
+        UploadFileResponse uploadFileResponse = candidateManager.upload(vspId, activeVersion002,
+            upload, user, OnboardingTypesEnum.ZIP.toString(),"file" );
+        assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.ZIP);
+        UploadDataEntity uploadData =
+                orchestrationTemplateDataDaoMock.getOrchestrationTemplate(vspId, version);
+
+    }
+
+    public InputStream getZipInputStream(String name) {
+        URL url = this.getClass().getResource(name);
+        File templateDir = new File(url.getFile());
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        try (ZipOutputStream zos = new ZipOutputStream(baos)) {
+            VSPCommon.zipDir(templateDir, "", zos, true);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return new ByteArrayInputStream(baos.toByteArray());
     }
-    return new ByteArrayInputStream(baos.toByteArray());
-  }
 
 
 }
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/ManifestParsingTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/ManifestParsingTest.java
new file mode 100644 (file)
index 0000000..3332e81
--- /dev/null
@@ -0,0 +1,58 @@
+package org.openecomp.sdc.vendorsoftwareproduct.upload.csar;
+
+import org.junit.Test;
+import org.openecomp.sdc.common.errors.Messages;
+import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.OnboardingManifest;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import static org.junit.Assert.*;
+
+public class ManifestParsingTest {
+
+    @Test
+    public void testSuccessfulParsing() throws IOException {
+        try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/manifest/ValidTosca.mf")) {
+            OnboardingManifest onboardingManifest = new OnboardingManifest(is);
+            assertTrue(onboardingManifest.isValid());
+            assertEquals(onboardingManifest.getMetadata().size(), 4);
+            assertEquals(onboardingManifest.getSources().size(), 5);
+        }
+    }
+
+    @Test
+    public void testNoMetadataParsing() throws IOException {
+        try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/manifest/InvalidTosca1.mf")) {
+            OnboardingManifest onboardingManifest = new OnboardingManifest(is);
+            assertFalse(onboardingManifest.isValid());
+            assertTrue(onboardingManifest.getErrors().stream().
+                    filter(error -> error.contains(Messages.MANIFEST_INVALID_LINE.getErrorMessage().substring(0, 10)))
+                    .findAny().isPresent());
+        }
+    }
+
+    @Test
+    public void testBrokenMDParsing() throws IOException {
+        try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/manifest/InvalidTosca2.mf")) {
+            OnboardingManifest onboardingManifest = new OnboardingManifest(is);
+            assertFalse(onboardingManifest.isValid());
+            assertTrue(onboardingManifest.getErrors().stream().
+                    filter(error -> error.contains(Messages.MANIFEST_INVALID_LINE.getErrorMessage().substring(0, 10)))
+                    .findAny().isPresent());
+        }
+    }
+
+    @Test
+    public void testNoMetaParsing() throws IOException {
+        try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/manifest/InvalidTosca4.mf")) {
+            OnboardingManifest onboardingManifest = new OnboardingManifest(is);
+            assertFalse(onboardingManifest.isValid());
+            assertTrue(onboardingManifest.getErrors().stream().
+                    filter(error -> error.contains(Messages.MANIFEST_NO_METADATA.getErrorMessage().substring(0, 10)))
+                    .findAny().isPresent());
+        }
+    }
+
+
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/UploadCSARFileTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/UploadCSARFileTest.java
new file mode 100644 (file)
index 0000000..a7fc0e1
--- /dev/null
@@ -0,0 +1,221 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdc.vendorsoftwareproduct.upload.csar;
+
+
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
+import org.openecomp.core.model.dao.ServiceModelDao;
+import org.openecomp.core.model.types.ServiceElement;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
+import org.openecomp.sdc.common.errors.Messages;
+import org.openecomp.sdc.datatypes.error.ErrorMessage;
+import org.openecomp.sdc.healing.api.HealingManager;
+import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateCandidateDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
+import org.openecomp.sdc.vendorsoftwareproduct.impl.OrchestrationTemplateCandidateManagerImpl;
+import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionDataExtractor;
+import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
+import org.openecomp.sdc.vendorsoftwareproduct.services.impl.filedatastructuremodule.CandidateServiceImpl;
+import org.openecomp.sdc.vendorsoftwareproduct.services.impl.filedatastructuremodule.ManifestCreatorNamingConventionImpl;
+import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
+import org.openecomp.sdc.versioning.dao.types.Version;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.List;
+import java.util.function.Predicate;
+
+import static org.junit.Assert.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+
+public class UploadCSARFileTest {
+    private static final String USER1 = "vspTestUser1";
+
+    public static final Version VERSION01 = new Version(0, 1);
+
+    @Mock
+    private VendorSoftwareProductDao vendorSoftwareProductDaoMock;
+    @Mock
+    private OrchestrationTemplateDao orchestrationTemplateDataDaoMock;
+
+    @Spy
+    private CandidateServiceImpl candidateService;
+    @Mock
+    private HealingManager healingManagerMock;
+    @Mock
+    private CompositionDataExtractor compositionDataExtractorMock;
+    @Mock
+    private ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDaoMock;
+    @Mock
+    private CompositionEntityDataManager compositionEntityDataManagerMock;
+    @Mock
+    private VendorSoftwareProductInfoDao vspInfoDaoMock;
+    @Mock
+    private OrchestrationTemplateCandidateDao orchestrationTemplateCandidateDao;
+    @Mock
+    private ManifestCreatorNamingConventionImpl manifestCreator;
+
+    private OrchestrationTemplateCandidateManagerImpl candidateManager;
+
+
+    public static String id001 = null;
+
+    public static Version activeVersion002 = null;
+
+
+    @BeforeMethod
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        candidateService = new CandidateServiceImpl(manifestCreator,orchestrationTemplateCandidateDao);
+        candidateManager = new OrchestrationTemplateCandidateManagerImpl( vendorSoftwareProductDaoMock,
+                vspInfoDaoMock,
+                orchestrationTemplateDataDaoMock,
+                candidateService,  healingManagerMock,
+                compositionDataExtractorMock,
+                serviceModelDaoMock,
+                compositionEntityDataManagerMock,
+                null,
+                null,
+                null,
+                null,
+                null);
+    }
+
+    @Test
+    public void testSuccessfulUploadFile() throws Exception {
+        VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0));
+        doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class));
+
+        try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/SDCmock.csar")) {
+            UploadFileResponse uploadFileResponse = candidateManager.upload(id001, activeVersion002, is, USER1, "csar", "SDCmock");
+            assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR);
+            assertEquals(0, uploadFileResponse.getErrors().size());
+            assertTrue(uploadFileResponse.getErrors().isEmpty());
+        }
+    }
+
+    @Test
+    public void testFail1UploadFile() throws Exception {
+        VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0));
+        doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class));
+
+        try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/SDCmockFail1.csar")) {
+            UploadFileResponse uploadFileResponse = candidateManager.upload(id001, activeVersion002, is, USER1,
+                    "csar", "SDCmockFail1");
+            assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR);
+            assertEquals(1, uploadFileResponse.getErrors().size());
+            assertTrue( uploadFileResponse.getErrors().values().stream()
+                    .filter(getListPredicate(Messages.CSAR_FILES_NOT_ALLOWED
+                            .getErrorMessage().substring(0, 7))).findAny().isPresent());
+        }
+    }
+
+    private Predicate<List<ErrorMessage>> getListPredicate(String substring) {
+        return error -> isEquals(substring, error);
+    }
+
+    private boolean isEquals(String substring, List<ErrorMessage> error) {
+        return error.iterator().next().getMessage().contains(substring);
+    }
+
+    @Test
+    public void testFail2UploadFile() throws Exception {
+        VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0));
+        doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class));
+
+        try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/SDCmockFail2.csar")) {
+            UploadFileResponse uploadFileResponse = candidateManager.upload(id001, activeVersion002, is, USER1,
+                    "csar", "SDCmockFail2");
+            assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR);
+            assertEquals(1, uploadFileResponse.getErrors().size());
+            assertTrue( uploadFileResponse.getErrors().values().stream()
+                    .filter(getListPredicate(Messages.CSAR_FILE_NOT_FOUND
+                            .getErrorMessage().substring(0,7))).findAny().isPresent());
+        }
+    }
+    @Test
+    public void testFail3UploadFile() throws Exception {
+        VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0));
+        doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class));
+
+        try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/SDCmockFail3.csar")) {
+            UploadFileResponse uploadFileResponse = candidateManager.upload(id001, activeVersion002, is, USER1,
+                    "csar", "SDCmockFail3");
+            assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR);
+            assertEquals(1, uploadFileResponse.getErrors().size());
+        }
+    }
+
+    @Test
+    public void testUploadFileIsNotZip() throws Exception {
+        VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0));
+        doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class));
+
+        try (InputStream is = new ByteArrayInputStream( "Thia is not a zip file".getBytes() );) {
+            UploadFileResponse uploadFileResponse = candidateManager.upload(id001, activeVersion002, is, USER1,
+                    "csar", "file");
+            assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR);
+            assertFalse(uploadFileResponse.getErrors().isEmpty());
+            assertTrue( uploadFileResponse.getErrors().values().stream()
+                    .filter(getListPredicate(Messages.CSAR_FILE_NOT_FOUND
+                            .getErrorMessage().substring(0,7))).findAny().isPresent());
+        }
+    }
+    @Test
+    public void testUploadFileIsEmpty() throws Exception {
+        VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0));
+        doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class));
+
+        try (InputStream is = new ByteArrayInputStream( new byte[]{} )) {
+            UploadFileResponse uploadFileResponse = candidateManager.upload(id001,
+                activeVersion002, is, USER1, "csar", "file");
+            assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR);
+            assertEquals(1, uploadFileResponse.getErrors().size());
+        }
+    }
+
+    @Test
+    public void testMFError() throws Exception {
+        VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0));
+        doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class));
+
+        try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/SDCmockBrokenMF.csar")) {
+            UploadFileResponse uploadFileResponse = candidateManager.upload(id001, activeVersion002, is, USER1, "csar", "SDCmockBrokenMF");
+            assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR);
+            assertEquals(1, uploadFileResponse.getErrors().size());
+            assertTrue( uploadFileResponse.getErrors()
+                    .values().stream()
+                    .filter(getListPredicate(Messages.MANIFEST_NO_METADATA.getErrorMessage())).findAny().isPresent());
+
+        }
+    }
+
+
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmock.csar b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmock.csar
new file mode 100644 (file)
index 0000000..f69efd2
Binary files /dev/null and b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmock.csar differ
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockBrokenMF.csar b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockBrokenMF.csar
new file mode 100644 (file)
index 0000000..02593a1
Binary files /dev/null and b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockBrokenMF.csar differ
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail1.csar b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail1.csar
new file mode 100644 (file)
index 0000000..5e3ee6f
Binary files /dev/null and b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail1.csar differ
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail2.csar b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail2.csar
new file mode 100644 (file)
index 0000000..4874578
Binary files /dev/null and b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail2.csar differ
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail3.csar b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail3.csar
new file mode 100644 (file)
index 0000000..c009a04
Binary files /dev/null and b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail3.csar differ
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca1.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca1.mf
new file mode 100644 (file)
index 0000000..f28014e
--- /dev/null
@@ -0,0 +1,11 @@
+
+
+source: MainServiceTemplate.yaml
+
+source: Definitions/GlobalSubstitutionTypesServiceTemplate.yaml
+
+source: Artifacts/install.sh
+
+source: Artifacts/create_stack.sh
+
+source: Licenses/license.xml
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca2.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca2.mf
new file mode 100644 (file)
index 0000000..95f7a41
--- /dev/null
@@ -0,0 +1,18 @@
+metadata:
+    vnf_product_name: Mock
+    vnf_provider_id: ZTE
+
+source: MainServiceTemplate.yaml
+
+    vnf_package_version: 1.0
+    vnf_release_data_time: 2017.01.01T10:00+03:00
+
+
+
+source: Definitions/GlobalSubstitutionTypesServiceTemplate.yaml
+
+source: Artifacts/install.sh
+
+source: Artifacts/create_stack.sh
+
+source: Licenses/license.xml
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca3.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca3.mf
new file mode 100644 (file)
index 0000000..64e9445
--- /dev/null
@@ -0,0 +1,7 @@
+metadata:
+    vnf_product_name: Mock
+    vnf_provider_id: ZTE
+    vnf_package_version: 1.0
+    vnf_release_data_time: 2017.01.01T10:00+03:00
+
+
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca4.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca4.mf
new file mode 100644 (file)
index 0000000..a563ddd
--- /dev/null
@@ -0,0 +1,12 @@
+metadata:
+
+
+source: MainServiceTemplate.yaml
+
+source: Definitions/GlobalSubstitutionTypesServiceTemplate.yaml
+
+source: Artifacts/install.sh
+
+source: Artifacts/create_stack.sh
+
+source: Licenses/license.xml
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidTosca.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidTosca.mf
new file mode 100644 (file)
index 0000000..88c6751
--- /dev/null
@@ -0,0 +1,15 @@
+metadata:
+    vnf_product_name: Mock
+    vnf_provider_id: ZTE
+    vnf_package_version: 1.0
+    vnf_release_data_time: 2017.01.01T10:00+03:00
+
+source: MainServiceTemplate.yaml
+
+source: Definitions/GlobalSubstitutionTypesServiceTemplate.yaml
+
+source: Artifacts/install.sh
+
+source: Artifacts/create_stack.sh
+
+source: Licenses/license.xml
index 9fff4bd..8bcb0a5 100644 (file)
@@ -28,6 +28,14 @@ public enum Messages {
       "functionalities"),
 
   INVALID_ZIP_FILE("Invalid zip file"),
+  INVALID_CSAR_FILE("Invalid csar file"),
+  CSAR_FILE_NOT_FOUND("Each CSAR file must contain %s file."),
+  CSAR_DIRECTORIES_NOT_ALLOWED("Directory : %s , is not allowed."),
+  CSAR_FILES_NOT_ALLOWED("File : %s , are not allowed."),
+  MANIFEST_INVALID_LINE("Manifest contains invalid line : %s"),
+  MANIFEST_NO_METADATA("Manifest must contain metadata"),
+  MANIFEST_NO_SOURCES("Manifest must contain source"),
+  MANIFEST_PARSER_INTERNAL("Invalid manifest file"),
   FAILED_TO_TRANSLATE_ZIP_FILE("Failed to translate zip file"),
   ZIP_NOT_EXIST("Zip file doesn't exist"),
 
@@ -45,7 +53,7 @@ public enum Messages {
   NO_ZIP_FILE_WAS_UPLOADED_OR_ZIP_NOT_EXIST("no zip file was uploaded or zip file doesn't exist"),
   MAPPING_OBJECTS_FAILURE("Failed to map object %s to %s. Exception message: %s"),
   MORE_THEN_ONE_VOL_FOR_HEAT("heat contains more then one vol. selecting only first vol"),
-  ZIP_CONTENT_MAP("failed to load zip content"),
+  FILE_CONTENT_MAP("failed to load %s content"),
   CREATE_MANIFEST_FROM_ZIP("cannot create manifest from the attached zip file"),
   CANDIDATE_PROCESS_FAILED("Candidate zip file process failed"),
   FOUND_UNASSIGNED_FILES("cannot process zip since it has unassigned files"),
@@ -66,7 +74,9 @@ public enum Messages {
   INVALID_MANIFEST_FILE("invalid manifest file"),
   INVALID_FILE_TYPE("Missing or Unknown file type in Manifest"),
   ENV_NOT_ASSOCIATED_TO_HEAT("ENV file must be associated to a HEAT file"),
-
+  CSAR_MANIFEST_FILE_NOT_EXIST("CSAR manifest file does not exist"),
+  CSAR_FAILED_TO_READ("CSAR file is not readable"),
+  TOSCA_PARSING_FAILURE("Invalid tosca file. Error code : %s, Error message : %s/"),
   /* content errors*/
   INVALID_YAML_FORMAT("Invalid YAML format - %s"),
   INVALID_YAML_FORMAT_REASON("Invalid YAML format Problem - [%s]"),
index f4d6209..1c52930 100644 (file)
@@ -22,8 +22,11 @@ package org.openecomp.sdc.common.utils;
 
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.apache.commons.lang3.tuple.Pair;
 import org.openecomp.core.utilities.file.FileContentHandler;
 import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.common.errors.CoreException;
 import org.openecomp.sdc.common.errors.ErrorCategory;
 import org.openecomp.sdc.common.errors.ErrorCode;
@@ -45,38 +48,54 @@ import java.util.zip.ZipInputStream;
 
 public class CommonUtil {
 
-  public static FileContentHandler validateAndUploadFileContent(byte[] uploadedFileData)
+  public static FileContentHandler validateAndUploadFileContent(OnboardingTypesEnum type,
+                                                                byte[] uploadedFileData)
       throws IOException {
-    return getFileContentMapFromOrchestrationCandidateZipAndValidateNoFolders(uploadedFileData);
+    return getFileContentMapFromOrchestrationCandidateZipAndValidateNoFolders(type, uploadedFileData);
   }
 
   /**
    * Gets files out of the zip AND validates zip is flat (no folders)
    *
+   *
+   * @param type
    * @param uploadFileData zip file
    * @return FileContentHandler if input is valid and has no folders
    */
   private static FileContentHandler getFileContentMapFromOrchestrationCandidateZipAndValidateNoFolders(
-      byte[] uploadFileData)
+      OnboardingTypesEnum type, byte[] uploadFileData)
       throws IOException {
+    Pair<FileContentHandler,List<String> > pair = getFileContentMapFromOrchestrationCandidateZip(uploadFileData);
 
-    List<String> folderList = new ArrayList<>();
-    FileContentHandler mapFileContent = new FileContentHandler();
+    if(type.equals(OnboardingTypesEnum.ZIP)) {
+      validateNoFolders(pair.getRight());
+    }
 
-    try (ZipInputStream inputZipStream = new ZipInputStream(new ByteArrayInputStream(uploadFileData))) {
+    return pair.getLeft();
+  }
 
+  public static Pair<FileContentHandler,List<String> > getFileContentMapFromOrchestrationCandidateZip(
+          byte[] uploadFileData)
+          throws IOException {
+    ZipEntry zipEntry;
+    List<String> folderList = new ArrayList<>();
+    FileContentHandler mapFileContent = new FileContentHandler();
+     try ( ByteArrayInputStream in = new ByteArrayInputStream(uploadFileData);
+          ZipInputStream inputZipStream = new ZipInputStream(in)){
+      byte[] fileByteContent;
       String currentEntryName;
-      ZipEntry zipEntry;
 
       while ((zipEntry = inputZipStream.getNextEntry()) != null) {
-
         currentEntryName = zipEntry.getName();
+        // else, get the file content (as byte array) and save it in a map.
+        fileByteContent = FileUtils.toByteArray(inputZipStream);
+
         int index = lastIndexFileSeparatorIndex(currentEntryName);
         if (index != -1) { //todo ?
           folderList.add(currentEntryName);
-        } else {
-          // else, get the file content (as byte array) and save it in a map.
-          mapFileContent.addFile(currentEntryName, FileUtils.toByteArray(inputZipStream));
+        }
+        if(isFile(currentEntryName)) {
+          mapFileContent.addFile(currentEntryName, fileByteContent);
         }
       }
 
@@ -84,9 +103,11 @@ public class CommonUtil {
       throw new IOException(exception);
     }
 
-    validateNoFolders(folderList);
+    return new ImmutablePair<>(mapFileContent,folderList);
+  }
 
-    return mapFileContent;
+  private static boolean isFile(String currentEntryName) {
+    return !(currentEntryName.endsWith("\\") || currentEntryName.endsWith("/"));
   }
 
   private static void validateNoFolders(List<String> folderList) {
index 156a86c..24da836 100644 (file)
@@ -23,6 +23,7 @@ package org.openecomp.sdc.common.utils;
 public class SdcCommon {
 
   public static final String MANIFEST_NAME = "MANIFEST.json";
+  public static final String CSAR_MANIFEST_NAME = "MainServiceTemplate.mf";
   public static final String UPLOAD_FILE = "uploadFile";
   public static final String PROCESS_FILE = "Process File";
   public static final String ILLEGAL_MANIFEST = "Illegal manifest";
index e04f02c..0fb587c 100644 (file)
@@ -20,6 +20,7 @@
 
 package org.openecomp.core.utilities.file;
 
+import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOUtils;
 import org.openecomp.core.utilities.json.JsonUtil;
 import org.openecomp.sdc.tosca.services.YamlUtil;
@@ -195,6 +196,19 @@ public class FileUtils {
     return fileName.substring(0, fileName.lastIndexOf("."));
   }
 
+  public static String getFileExtension(String filename) {
+      return FilenameUtils.getExtension(filename);
+  }
+
+  public static String getNetworkPackageName(String filename){
+    String[] split = filename.split("\\.");
+    String name = null;
+    if (split != null && split.length > 1){
+      name = split[0];
+    }
+    return name;
+  }
+
   /**
    * Gets file content map from zip.
    *
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/orchestration/OnboardingTypesEnum.java b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/orchestration/OnboardingTypesEnum.java
new file mode 100644 (file)
index 0000000..04e64c3
--- /dev/null
@@ -0,0 +1,32 @@
+package org.openecomp.core.utilities.orchestration;
+
+import java.util.Optional;
+
+import static java.util.Arrays.asList;
+public enum OnboardingTypesEnum {
+    CSAR("csar"), ZIP("zip"), NONE("none");
+    private String type;
+
+    OnboardingTypesEnum(String type) {
+        this.type = type;
+    }
+
+    @Override
+    public String toString() {
+        return type;
+    }
+
+    public static final OnboardingTypesEnum getOnboardingTypesEnum(final String inStr) {
+        if (inStr == null) {
+            return null;
+        }
+        Optional<OnboardingTypesEnum>  onboardingTypesOptional =  asList(OnboardingTypesEnum.values()).stream()
+                .filter(onboardingTypesEnum -> onboardingTypesEnum.toString().equals(inStr)).findAny();
+       if( onboardingTypesOptional.isPresent()){
+          return onboardingTypesOptional.get();
+       }else {
+           return null;
+       }
+    }
+
+}
index 618922c..03ee98d 100644 (file)
             <artifactId>openecomp-sdc-vendor-license-api</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+
     </dependencies>
 
 </project>
index bdb7bc3..9800d02 100644 (file)
@@ -27,6 +27,7 @@ import org.openecomp.core.model.types.ServiceElement;
 import org.openecomp.core.translator.datatypes.TranslatorOutput;
 import org.openecomp.core.utilities.file.FileContentHandler;
 import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.common.utils.CommonUtil;
 import org.openecomp.sdc.common.utils.SdcCommon;
 import org.openecomp.sdc.healing.interfaces.Healer;
@@ -49,7 +50,6 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDaoFactory;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComputeEntity;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity;
@@ -300,7 +300,8 @@ public class CompositionDataHealer implements Healer {
     FileContentHandler fileContentHandler;
     try {
       fileContentHandler =
-          CommonUtil.validateAndUploadFileContent(uploadData.getContentData().array());
+          CommonUtil.validateAndUploadFileContent(
+              OnboardingTypesEnum.ZIP, uploadData.getContentData().array());
       return HeatToToscaUtil.loadAndTranslateTemplateData(fileContentHandler);
     } catch (Exception e) {
       return null;
index e0b7adb..0d48444 100644 (file)
@@ -22,6 +22,7 @@ package org.openecomp.sdc.healing.healers;
 
 import org.openecomp.core.utilities.file.FileContentHandler;
 import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.common.utils.CommonUtil;
 import org.openecomp.sdc.common.utils.SdcCommon;
 import org.openecomp.sdc.datatypes.error.ErrorMessage;
@@ -94,7 +95,7 @@ public class FileDataStructureHealer implements Healer {
     byte[] byteContentData = uploadData.getContentData().array();
     FileContentHandler fileContentHandler;
     try{
-      fileContentHandler = CommonUtil.validateAndUploadFileContent(byteContentData);
+      fileContentHandler = CommonUtil.validateAndUploadFileContent(OnboardingTypesEnum.ZIP, byteContentData);
       Map<String, List<ErrorMessage>> errors = new HashMap<>();
       OrchestrationTemplateCandidateData candidateDataEntity =
         new CandidateEntityBuilder(candidateService)
index d5ccd36..44b6062 100644 (file)
@@ -8,6 +8,7 @@ import org.openecomp.core.model.dao.ServiceTemplateDaoInter;
 import org.openecomp.core.model.types.ServiceElement;
 import org.openecomp.core.translator.datatypes.TranslatorOutput;
 import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.common.utils.CommonUtil;
 import org.openecomp.sdc.common.utils.SdcCommon;
 import org.openecomp.sdc.healing.interfaces.Healer;
@@ -53,7 +54,7 @@ public class HeatToToscaTranslationHealer implements Healer  {
     FileContentHandler fileContentHandler;
     TranslatorOutput translatorOutput;
     try {
-      fileContentHandler = CommonUtil.validateAndUploadFileContent(uploadData
+      fileContentHandler = CommonUtil.validateAndUploadFileContent(OnboardingTypesEnum.ZIP, uploadData
           .getContentData().array());
       translatorOutput =
           HeatToToscaUtil.loadAndTranslateTemplateData(fileContentHandler);
index 5d6050a..0b06fb1 100644 (file)
@@ -1,11 +1,10 @@
 package org.openecomp.sdc.healing.healers;
 
 
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.common.utils.SdcCommon;
 import org.openecomp.sdc.healing.interfaces.Healer;
 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDaoFactory;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDaoFactory;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
@@ -15,15 +14,18 @@ import java.util.Map;
 import java.util.Objects;
 
 public class VspOnboardingMethodHealer implements Healer {
-  /*private static final VendorSoftwareProductDao vendorSoftwareProductDao =
-      VendorSoftwareProductDaoFactory.getInstance().createInterface();*/
-  private static final VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao =
+  private static VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao =
       VendorSoftwareProductInfoDaoFactory.getInstance().createInterface();
   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
 
   public VspOnboardingMethodHealer(){
+  }
 
+  public VspOnboardingMethodHealer( VendorSoftwareProductInfoDao inVendorSoftwareProductInfoDao){
+    vendorSoftwareProductInfoDao = inVendorSoftwareProductInfoDao;
   }
+
+
   @Override
   public Object heal(Map<String, Object> healingParams) throws Exception {
     mdcDataDebugMessage.debugEntryMessage(null, null);
@@ -33,14 +35,22 @@ public class VspOnboardingMethodHealer implements Healer {
     Version version = (Version) healingParams.get(SdcCommon.VERSION);
     VspDetails vendorSoftwareProductInfo =
         vendorSoftwareProductInfoDao.get(new VspDetails(vspId, version));
-    vendorSoftwareProductInfo.getOnboardingMethod();
+    String onboardingValue = vendorSoftwareProductInfo.getOnboardingMethod();
 
-    if(Objects.isNull(vendorSoftwareProductInfo.getOnboardingMethod())) {
-      onboardingMethod="HEAT";
-      vendorSoftwareProductInfo.setOnboardingMethod(onboardingMethod);
-      vendorSoftwareProductInfoDao.update(vendorSoftwareProductInfo);
-      //vendorSoftwareProductDao.updateVendorSoftwareProductInfo(vendorSoftwareProductInfo);
+    if(Objects.isNull(onboardingValue)) {
+      onboardingMethod="NetworkPackage";
+
+      updateVSPInfo(OnboardingTypesEnum.ZIP.toString(), onboardingMethod, vendorSoftwareProductInfo);
+    } else if (onboardingValue.equals("HEAT")){
+      onboardingMethod="NetworkPackage";
+      updateVSPInfo(OnboardingTypesEnum.ZIP.toString(),onboardingMethod, vendorSoftwareProductInfo);
     }
     return onboardingMethod;
   }
+
+  private void updateVSPInfo(String onboardingOrigin,  String onboardingMethod, VspDetails vendorSoftwareProductInfo) {
+    vendorSoftwareProductInfo.setOnboardingMethod(onboardingMethod);
+    vendorSoftwareProductInfo.setOnboardingOrigin(onboardingOrigin);
+    vendorSoftwareProductInfoDao.update(vendorSoftwareProductInfo);
+  }
 }
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealerTest.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealerTest.java
new file mode 100644 (file)
index 0000000..b732cb0
--- /dev/null
@@ -0,0 +1,70 @@
+package org.openecomp.sdc.healing.healers;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.openecomp.sdc.common.utils.SdcCommon;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+
+public class VspOnboardingMethodHealerTest{
+
+    @Mock
+    private VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(VspOnboardingMethodHealerTest.this);
+    }
+
+    @Test
+    public void checkHealingWithNullOnboarding() throws Exception{
+        VspOnboardingMethodHealer vspOnboardingMethodHealer = new VspOnboardingMethodHealer(vendorSoftwareProductInfoDao);
+        Map<String,Object> params = new HashMap<>();
+        params.put(SdcCommon.VSP_ID,"1");
+        params.put(SdcCommon.VERSION, new Version(1,1));
+        VspDetails vspDetails = new VspDetails();
+        vspDetails.setOnboardingMethod(null);
+        Mockito.when(vendorSoftwareProductInfoDao.get(any())).thenReturn(vspDetails);
+        vspOnboardingMethodHealer.heal(params);
+        assertEquals(vspDetails.getOnboardingMethod(),"NetworkPackage");
+        assertEquals(vspDetails.getOnboardingOrigin(),"zip");
+    }
+
+    @Test
+    public void checkHealingWithHEATOnboarding() throws Exception{
+        VspOnboardingMethodHealer vspOnboardingMethodHealer = new VspOnboardingMethodHealer(vendorSoftwareProductInfoDao);
+        Map<String,Object> params = new HashMap<>();
+        params.put(SdcCommon.VSP_ID,"1");
+        params.put(SdcCommon.VERSION, new Version(1,1));
+        VspDetails vspDetails = new VspDetails();
+        vspDetails.setOnboardingMethod("HEAT");
+        Mockito.when(vendorSoftwareProductInfoDao.get(any())).thenReturn(vspDetails);
+        vspOnboardingMethodHealer.heal(params);
+        assertEquals(vspDetails.getOnboardingMethod(),"NetworkPackage");
+        assertEquals(vspDetails.getOnboardingOrigin(),"zip");
+    }
+
+    @Test
+    public void checkHealingWithManualOnboarding() throws Exception{
+        VspOnboardingMethodHealer vspOnboardingMethodHealer = new VspOnboardingMethodHealer(vendorSoftwareProductInfoDao);
+        Map<String,Object> params = new HashMap<>();
+        params.put(SdcCommon.VSP_ID,"1");
+        params.put(SdcCommon.VERSION, new Version(1,1));
+        VspDetails vspDetails = new VspDetails();
+        vspDetails.setOnboardingMethod("Manual");
+        Mockito.when(vendorSoftwareProductInfoDao.get(any())).thenReturn(vspDetails);
+        vspOnboardingMethodHealer.heal(params);
+        assertEquals(vspDetails.getOnboardingMethod(),"Manual");
+        assertEquals(vspDetails.getOnboardingOrigin(),null);
+    }
+}
\ No newline at end of file
index 55ab062..0a4e14f 100644 (file)
     </parent>
 
     <dependencies>
+        <dependency>
+            <groupId>org.openecomp.sdc.common</groupId>
+            <artifactId>openecomp-configuration-management-core</artifactId>
+            <version>${openecomp.sdc.common.version}</version>
+            <scope>runtime</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
         <dependency>
             <groupId>org.openecomp.sdc.common</groupId>
             <artifactId>openecomp-tosca-datatype</artifactId>
         </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>${mvn.surefire.version}</version>
+                <configuration>
+                    <skipTests>true</skipTests>
+                    <useSystemClassLoader>false</useSystemClassLoader>
+                    <redirectTestOutputToFile>true</redirectTestOutputToFile>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>
diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManager.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManager.java
new file mode 100644 (file)
index 0000000..517c690
--- /dev/null
@@ -0,0 +1,79 @@
+package org.openecomp.sdc.heat.services.tree;
+
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.sdc.common.utils.SdcCommon;
+import org.openecomp.sdc.datatypes.error.ErrorMessage;
+import org.openecomp.sdc.heat.datatypes.structure.Artifact;
+import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree;
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerFactory;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+public class ToscaTreeManager {
+
+  private static Logger logger = (Logger) LoggerFactory.getLogger(ToscaTreeManager.class);
+
+  private FileContentHandler csarContentMap = new FileContentHandler();
+  private byte[] manifest;
+  private HeatStructureTree tree = new HeatStructureTree();
+  private Map<String, Artifact> artifactRef = new HashMap<>();
+  private Map<String, HeatStructureTree> fileTreeRef = new HashMap<>();
+
+
+  public void addFile(String fileName, byte[] content) {
+    if (fileName.equals(SdcCommon.CSAR_MANIFEST_NAME)) {
+      manifest = content;
+
+    } else {
+      csarContentMap.addFile(fileName, content);
+    }
+  }
+
+  public void createTree(){
+    if (manifest == null) {
+      logger.error("Missing manifest file in the zip.");
+      return;
+    }
+
+    for(Map.Entry<String, byte[]> fileEntry : csarContentMap.getFiles().entrySet()){
+      String[] splitFilename = getFullFileNameAsArray(fileEntry.getKey());
+      addFileToTree(splitFilename, 0, tree);
+    }
+
+
+  }
+
+  private void addFileToTree(String[] splitFilename, int startIndex, HeatStructureTree parent){
+    fileTreeRef.putIfAbsent(splitFilename[startIndex], new HeatStructureTree());
+    HeatStructureTree heatStructureTree = fileTreeRef.get(splitFilename[startIndex]);
+    heatStructureTree.setFileName(splitFilename[startIndex]);
+    if(startIndex < splitFilename.length - 1){
+      addFileToTree(splitFilename, startIndex + 1, heatStructureTree);
+    }
+    parent.addHeatStructureTreeToNestedHeatList(heatStructureTree);
+  }
+
+  public void addErrors(Map<String, List<ErrorMessage>> validationErrors){
+    validationErrors.entrySet().stream().filter(entry -> {
+      return fileTreeRef.get(entry.getKey()) != null;
+    }).forEach(entry -> entry.getValue().stream().forEach(error ->
+        fileTreeRef.get(entry.getKey()).addErrorToErrorsList(error)));
+  }
+
+  private String[] getFullFileNameAsArray(String filename){
+    if(filename.contains("/")){
+      return filename.split("/");
+    }
+
+    return filename.split(Pattern.quote(File.separator));
+  }
+
+  public HeatStructureTree getTree(){
+    return tree;
+  }
+}
index de39cff..387b204 100644 (file)
@@ -30,6 +30,7 @@ public class AuditMessages {
   public static final String HEAT_VALIDATION_STARTED = "HEAT validation started. VSP Id: ";
   public static final String HEAT_VALIDATION_COMPLETED = "HEAT validation completed. VSP Id: ";
   public static final String HEAT_VALIDATION_ERROR = "HEAT validation error: %s. VSP Id: %s";
+  public static final String CSAR_VALIDATION_STARTED = "CSAR validation started. VSP Id: ";
   public static final String HEAT_TRANSLATION_STARTED = "HEAT translation started. VSP Id: ";
   public static final String HEAT_TRANSLATION_COMPLETED = "HEAT translation completed. VSP Id: ";
   public static final String ENRICHMENT_ERROR = "Enrichment error: %s. VSP Id: %s";
index a5d1ac1..44c1ef8 100644 (file)
@@ -35,6 +35,8 @@ import org.openecomp.sdc.datatypes.error.ErrorMessage;
 import org.openecomp.sdc.enrichment.EnrichmentInfo;
 import org.openecomp.sdc.enrichment.inter.ExternalArtifactEnricherInterface;
 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
+import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
+import org.openecomp.sdc.tosca.services.DataModelUtil;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentArtifactDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDaoFactory;
@@ -143,7 +145,9 @@ public class MonitoringMibEnricher implements ExternalArtifactEnricherInterface
     if (!artifact.isPresent()) {
       return;
     }
-    path = componentName + File.separator + ArtifactCategory.DEPLOYMENT.getDisplayName()
+    String unifiedComponentNodeType =
+        ToscaNodeType.ABSTRACT_NODE_TYPE_PREFIX + DataModelUtil.getNamespaceSuffix(componentName);
+    path = unifiedComponentNodeType + File.separator + ArtifactCategory.DEPLOYMENT.getDisplayName()
         + File.separator + type.name();
     MonitoringArtifactInfo monitoringArtifactInfo = new MonitoringArtifactInfo();
     monitoringArtifactInfo.setName(path);
index 32df165..a7762e8 100644 (file)
@@ -77,7 +77,7 @@ public class AbstractSubstituteToscaEnricher {
           if (toscaAnalyzerService.isTypeOf(nodeTemplate, VFC_ABSTRACT_SUBSTITUTE, serviceTemplate,
               toscaModel)) {
 
-            String componentDisplayName = getComponentDisplayName(nodeTemplateId);
+            String componentDisplayName = getComponentDisplayName(nodeTemplateId, nodeTemplate);
 
             setProperty(nodeTemplate, VM_TYPE_TAG, componentDisplayName);
 
@@ -157,7 +157,7 @@ public class AbstractSubstituteToscaEnricher {
           if (toscaAnalyzerService.isTypeOf(nodeTemplate, VFC_ABSTRACT_SUBSTITUTE, serviceTemplate,
               toscaModel)) {
 
-            String componentDisplayName = getComponentDisplayName(nodeTemplateId);
+            String componentDisplayName = getComponentDisplayName(nodeTemplateId, nodeTemplate);
 
             if (componentDisplayNameToNodeTempalteIds.containsKey(componentDisplayName)) {
               componentDisplayNameToNodeTempalteIds.get(componentDisplayName).add(nodeTemplateId);
@@ -206,12 +206,17 @@ public class AbstractSubstituteToscaEnricher {
       nodeTemplate.setRequirements(requirements);
   }
 
-  private String getComponentDisplayName(String nodeTemplateId ) {
+  private String getComponentDisplayName(String nodeTemplateId, NodeTemplate nodeTemplate) {
     String componentDisplayName = null;
     if (nodeTemplateId.contains(ABSTRACT_NODE_TEMPLATE_ID_PREFIX)) {
       String removedPrefix = nodeTemplateId.split(ABSTRACT_NODE_TEMPLATE_ID_PREFIX)[1];
       final String[] removedSuffix = removedPrefix.split("_\\d");
       componentDisplayName = removedSuffix[0];
+    } else {
+      final String type = nodeTemplate.getType();
+      final String[] splitted = type.split("\\.");
+      componentDisplayName = splitted[splitted.length - 1];
+
     }
     return componentDisplayName;
   }
index 5f1a671..3730a15 100644 (file)
@@ -31,6 +31,8 @@ import org.openecomp.core.model.dao.EnrichedServiceModelDao;
 import org.openecomp.core.model.types.ServiceArtifact;
 import org.openecomp.core.utilities.file.FileUtils;
 import org.openecomp.sdc.enrichment.EnrichmentInfo;
+import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
+import org.openecomp.sdc.tosca.services.DataModelUtil;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentArtifactDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
@@ -52,11 +54,6 @@ import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.times;
 
 
-/**
- * @author shiria
- * @since November 06, 2016.
- */
-
 public class MonitoringMibEnricherTest {
   @Mock
   private ComponentArtifactDao componentArtifactDaoMock;
@@ -89,15 +86,16 @@ public class MonitoringMibEnricherTest {
     monitoringMibEnricher.enrichComponent(componentEntity, vspId, version);
 
     String componentName = componentEntity.getComponentCompositionData().getName();
-
+    String unifiedComponentName =
+        ToscaNodeType.ABSTRACT_NODE_TYPE_PREFIX + DataModelUtil.getNamespaceSuffix(componentName);
     ArgumentCaptor<ServiceArtifact> expectedServiceArtifact =
         ArgumentCaptor.forClass(ServiceArtifact.class);
     Mockito.verify(enrichedServiceModelDaoMock, atLeastOnce())
         .storeExternalArtifact(expectedServiceArtifact.capture());
-    Assert
-        .assertEquals(expectedServiceArtifact.getValue().getName().startsWith(componentName), true);
+    Assert.assertEquals(expectedServiceArtifact.getValue().getName()
+        .startsWith(unifiedComponentName), true);
     Assert.assertEquals(expectedServiceArtifact.getValue().getName(),
-        componentName + File.separator + ArtifactCategory.DEPLOYMENT.getDisplayName() +
+        unifiedComponentName + File.separator + ArtifactCategory.DEPLOYMENT.getDisplayName() +
             File.separator + MonitoringUploadType.VES_EVENTS + File.separator + "mib1.yml");
 
   }
index 30c4bde..b3b7598 100644 (file)
             <artifactId>commons-io</artifactId>
             <version>2.5</version>
         </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-tosca-converter-api</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 </project>
index 575ba85..a7fecdd 100644 (file)
@@ -22,9 +22,9 @@ import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
 import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil;
 import org.openecomp.sdc.versioning.dao.types.Version;
 import org.openecomp.sdc.versioning.dao.types.VersionStatus;
+import org.openecomp.core.converter.datatypes.Constants;
 
 import java.io.ByteArrayInputStream;
-import java.io.IOException;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Objects;
diff --git a/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-api/pom.xml b/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-api/pom.xml
new file mode 100644 (file)
index 0000000..87a93ee
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <modelVersion>4.0.0</modelVersion>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-datatypes-lib</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <parent>
+        <groupId>org.openecomp.sdc</groupId>
+        <artifactId>openecomp-sdc-orchestration-lib</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.openecomp.sdc</groupId>
+    <artifactId>openecomp-sdc-orchesrtation-api</artifactId>
+    <version>1.1.0-SNAPSHOT</version>
+
+    
+</project>
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-core/pom.xml b/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-core/pom.xml
new file mode 100644 (file)
index 0000000..343ff02
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <modelVersion>4.0.0</modelVersion>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-orchesrtation-api</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc.core</groupId>
+            <artifactId>openecomp-utilities-lib</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <parent>
+        <groupId>org.openecomp.sdc</groupId>
+        <artifactId>openecomp-sdc-orchestration-lib</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.openecomp.sdc</groupId>
+    <artifactId>openecomp-sdc-orchesrtation-core</artifactId>
+    <version>1.1.0-SNAPSHOT</version>
+
+    
+</project>
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-impl/pom.xml b/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-impl/pom.xml
new file mode 100644 (file)
index 0000000..8ecfa0d
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <modelVersion>4.0.0</modelVersion>
+    <dependencies>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-orchesrtation-api</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-logging-api</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <parent>
+        <groupId>org.openecomp.sdc</groupId>
+        <artifactId>openecomp-sdc-orchestration-lib</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.openecomp.sdc</groupId>
+    <artifactId>openecomp-sdc-orchesrtation-impl</artifactId>
+    <version>1.1.0-SNAPSHOT</version>
+
+    
+</project>
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-orchestration-lib/pom.xml b/openecomp-be/lib/openecomp-sdc-orchestration-lib/pom.xml
new file mode 100644 (file)
index 0000000..dbcef4d
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>openecomp-sdc-orchestration-lib</artifactId>
+    <version>1.1.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <parent>
+        <artifactId>openecomp-sdc-lib</artifactId>
+        <groupId>org.openecomp.sdc</groupId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+
+    <modules>
+        <module>openecomp-sdc-orchesrtation-api</module>
+        <module>openecomp-sdc-orchesrtation-core</module>
+        <module>openecomp-sdc-orchesrtation-impl</module>
+    </modules>
+</project>
\ No newline at end of file
index 0e6610d..f5ad2a1 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;
@@ -118,6 +119,11 @@ public class TranslationContext {
   private Map<String, UnifiedSubstitutionData> unifiedSubstitutionData = new HashMap<>();
   private Set<String> unifiedHandledServiceTemplates = new HashSet<>();
 
+  private Map<String, Map<String, Map<String, Integer>>>
+      requirementIdAppearanceInNodeTemplate = new HashMap<>();
+
+  private Set<String> serviceTemplatesWithoutNodeTemplateSection = new HashSet<>();
+
   public static Map<String, ImplementationConfiguration>
   getSupportedConsolidationComputeResources() {
     return supportedConsolidationComputeResources;
@@ -377,6 +383,13 @@ public class TranslationContext {
     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);
@@ -492,7 +505,7 @@ public class TranslationContext {
   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<>();
     }
 
@@ -574,5 +587,31 @@ public class TranslationContext {
 
   }
 
+  public void addServiceTemplateWithoutNodeTemplates(String serviceTemplateName){
+    this.serviceTemplatesWithoutNodeTemplateSection.add(serviceTemplateName);
+  }
+
+  public boolean isServiceTemplateWithoutNodeTemplates(String serviceTemplateName){
+    return !Objects.isNull(serviceTemplateName) &&
+        this.serviceTemplatesWithoutNodeTemplateSection.contains(serviceTemplateName);
+  }
+
+  public void updateRequirementAssignmentIdIndex(String serviceTemplateName,
+                                                 String nodeTemplateId,
+                                                 String requirementId){
+    requirementIdAppearanceInNodeTemplate.putIfAbsent(serviceTemplateName, new HashMap<>());
+    requirementIdAppearanceInNodeTemplate
+        .get(serviceTemplateName).putIfAbsent(nodeTemplateId, new HashMap<>());
+
+    Map<String, Integer> requirementIdToAppearance =
+        requirementIdAppearanceInNodeTemplate.get(serviceTemplateName).get(nodeTemplateId);
+
+    if(requirementIdToAppearance.containsKey(requirementId)){
+      requirementIdToAppearance
+          .put(requirementId, requirementIdToAppearance.get(requirementId) + 1);
+    } else {
+      requirementIdToAppearance.put(requirementId, 0);
+    }
+  }
 
 }
index 4e92372..74deb04 100644 (file)
@@ -33,6 +33,7 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -189,7 +190,8 @@ public class ConsolidationDataUtil {
   private static boolean isNestedResourceIdOccuresInDifferentNestedFiles(TranslationContext context,
                                                                          String nestedHeatFileName,
                                                                          String nestedNodeTemplateId) {
-    return context.getAllTranslatedResourceIdsFromDiffNestedFiles(nestedHeatFileName).contains(nestedNodeTemplateId);
+    return Objects.nonNull(nestedHeatFileName)
+        && context.getAllTranslatedResourceIdsFromDiffNestedFiles(nestedHeatFileName).contains(nestedNodeTemplateId);
   }
 
   /**
@@ -283,6 +285,7 @@ public class ConsolidationDataUtil {
       ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
           requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
           requirementId, requirementAssignment);
+
     }
   }
 
@@ -311,6 +314,10 @@ public class ConsolidationDataUtil {
     EntityConsolidationData entityConsolidationData = null;
     TranslationContext translationContext = translateTo.getContext();
     ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
+
+    translationContext.updateRequirementAssignmentIdIndex(ToscaUtil.getServiceTemplateFileName
+        (translateTo.getServiceTemplate()), translateTo.getResourceId(), requirementId);
+
     RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData(
         requirementId, requirementAssignment);
 
@@ -324,7 +331,13 @@ public class ConsolidationDataUtil {
           serviceTemplate, translateTo.getTranslatedId());
     } else if (consolidationEntityType == ConsolidationEntityType.VFC_NESTED
         || consolidationEntityType == ConsolidationEntityType.NESTED) {
-      //ConnectedOut data for nested is not updated
+      entityConsolidationData =
+          getNestedTemplateConsolidationData(translationContext, serviceTemplate,
+              null,
+              translateTo.getTranslatedId());
+    }
+
+    if(Objects.isNull(entityConsolidationData)){
       return;
     }
 
index 4934fa7..bed404f 100644 (file)
@@ -56,6 +56,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;
@@ -81,6 +82,7 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -191,6 +193,11 @@ public class UnifiedCompositionService {
         handleSubstitutionGlobalNodeType(serviceTemplate, substitutionServiceTemplate,
             context, unifiedCompositionData, substitutionNodeTypeId, index);
 
+    ServiceTemplate globalSubstitutionServiceTemplate =
+        HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context);
+    addComputeNodeTypeToGlobalST(computeNodeType, serviceTemplate,
+        globalSubstitutionServiceTemplate, substitutionGlobalNodeType);
+
     HeatToToscaUtil.handleSubstitutionMapping(context,
         substitutionNodeTypeId,
         substitutionServiceTemplate, substitutionGlobalNodeType);
@@ -199,6 +206,19 @@ public class UnifiedCompositionService {
     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.
@@ -477,6 +497,8 @@ public class UnifiedCompositionService {
 
     updateNodeTypeProperties(nestedServiceTemplate, globalSubstitutionServiceTemplate,
         indexedNewNestedNodeTypeId);
+    //addComputeNodeTypeToGlobalST();
+
   }
 
   private void updateNodeTypeProperties(ServiceTemplate nestedServiceTemplate,
@@ -488,6 +510,8 @@ public class UnifiedCompositionService {
     NodeType nestedNodeType =
         DataModelUtil.getNodeType(globalSubstitutionServiceTemplate, nodeTypeId);
     nestedNodeType.setProperties(nodeTypePropertiesDefinition);
+    addComputeNodeTypeToGlobalST(nestedServiceTemplate.getNode_types().keySet().iterator().next()
+        , nestedServiceTemplate, globalSubstitutionServiceTemplate, nestedNodeType);
   }
 
   private String updateNodeTypeId(String nodeTypeId, String newNestedNodeTypeId,
@@ -565,6 +589,8 @@ public class UnifiedCompositionService {
 
     updNestedCompositionNodesConnectedInConnectivity(serviceTemplate, unifiedCompositionData,
         context);
+    updNestedCompositionNodesConnectedOutConnectivity(serviceTemplate, nestedServiceTemplate,
+        unifiedCompositionData, context);
     updNestedCompositionNodesGetAttrInConnectivity(serviceTemplate, unifiedCompositionData,
         context);
     updNestedCompositionOutputParamGetAttrInConnectivity(serviceTemplate,
@@ -607,6 +633,7 @@ public class UnifiedCompositionService {
     }
   }
 
+
   protected void updNodesConnectedOutConnectivity(ServiceTemplate serviceTemplate,
                                                   List<UnifiedCompositionData>
                                                       unifiedCompositionDataList,
@@ -642,6 +669,36 @@ public class UnifiedCompositionService {
     }
   }
 
+  private void updNestedCompositionNodesConnectedOutConnectivity(ServiceTemplate serviceTemplate,
+                                                                 ServiceTemplate nestedServiceTemplate,
+                                                                 UnifiedCompositionData unifiedCompositionData,
+                                                                 TranslationContext context) {
+    NestedTemplateConsolidationData nestedTemplateConsolidationData = unifiedCompositionData.getNestedTemplateConsolidationData();
+    Map<String, List<RequirementAssignmentData>> nodesConnectedOut =
+        Objects.isNull(nestedTemplateConsolidationData) ? new HashMap<>()
+            : nestedTemplateConsolidationData.getNodesConnectedOut();
+
+    FileComputeConsolidationData nestedFileComputeConsolidationData =
+        context.getConsolidationData().getComputeConsolidationData().getFileComputeConsolidationData
+            (ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate));
+
+    if(Objects.isNull(nestedFileComputeConsolidationData)){
+      return;
+    }
+
+    TypeComputeConsolidationData computeType =
+        nestedFileComputeConsolidationData.getAllTypeComputeConsolidationData().iterator().next();
+    if(Objects.isNull(computeType)){
+      return;
+    }
+
+    String singleComputeId = computeType.getAllComputeNodeTemplateIds().iterator().next();
+    if(Objects.nonNull(singleComputeId)) {
+      updateRequirementInNestedNodeTemplate(serviceTemplate, nestedTemplateConsolidationData,
+          singleComputeId, nodesConnectedOut);
+    }
+  }
+
   protected void updNodesConnectedInConnectivity(ServiceTemplate serviceTemplate,
                                                  List<UnifiedCompositionData>
                                                      unifiedCompositionDataList,
@@ -723,6 +780,23 @@ public class UnifiedCompositionService {
 
   }
 
+//  protected void updNestedCompositionNodesConnectedOutConnectivity(
+//      ServiceTemplate serviceTemplate,
+//      UnifiedCompositionData unifiedCompositionData,
+//      TranslationContext context) {
+//    NestedTemplateConsolidationData nestedTemplateConsolidationData = unifiedCompositionData
+//        .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());
+//    newNestedNodeTemplateId.ifPresent(
+//        newNestedNodeTemplateIdVal -> updNodesConnectedOutConnectivity(serviceTemplate,
+//            nestedTemplateConsolidationData,
+//            newNestedNodeTemplateIdVal, context, true));
+//
+//  }
+
   protected void updVolumeConnectivity(ServiceTemplate serviceTemplate,
                                        List<UnifiedCompositionData>
                                            unifiedCompositionDataList,
@@ -1039,6 +1113,46 @@ public class UnifiedCompositionService {
     }
   }
 
+  private void updateRequirementInNestedNodeTemplate(ServiceTemplate serviceTemplate,
+                                                     EntityConsolidationData
+                                                         entityConsolidationData,
+                                                     String newNodeTemplateId,
+                                                     Map<String, List<RequirementAssignmentData>>
+                                                         requirementAssignmentDataMap) {
+    ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
+
+    if(MapUtils.isEmpty(requirementAssignmentDataMap)){
+      return;
+    }
+
+    for (Map.Entry<String, List<RequirementAssignmentData>> entry : requirementAssignmentDataMap
+        .entrySet()) {
+      String nodeTemplateId = entityConsolidationData.getNodeTemplateId();
+      NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, nodeTemplateId);
+      if (nodeTemplate == null) {
+        //The node template is not found from id in the context
+        return;
+      }
+      List<RequirementAssignmentData> requirementAssignmentDataList = entry.getValue();
+      for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList) {
+        String oldRequirementId = requirementAssignmentData.getRequirementId();
+        RequirementAssignment clonedRequirementAssignment = (RequirementAssignment)
+            getClonedObject(requirementAssignmentData.getRequirementAssignment(),
+                RequirementAssignment.class);
+        String newRequirementId = oldRequirementId + "_" + newNodeTemplateId;
+        //Check if the requirement is not already present in the list of requirements of the
+        // node template
+        if (!toscaAnalyzerService.isRequirementExistInNodeTemplate(nodeTemplate,
+            newRequirementId, clonedRequirementAssignment)) {
+          DataModelUtil.removeRequirementAssignment(nodeTemplate, oldRequirementId,
+              requirementAssignmentData.getRequirementAssignment());
+          DataModelUtil.addRequirementAssignment(nodeTemplate, newRequirementId,
+              clonedRequirementAssignment);
+        }
+      }
+    }
+  }
+
   private NodeTemplate getAbstractNodeTemplate(
       ServiceTemplate serviceTemplate,
       UnifiedCompositionEntity unifiedCompositionEntity,
@@ -1212,9 +1326,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) {
@@ -1554,8 +1675,6 @@ 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);
@@ -1693,22 +1812,31 @@ public class UnifiedCompositionService {
         unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData();
     handleComputeNodeTemplate(serviceTemplate, substitutionServiceTemplate,
         unifiedCompositionDataList, context);
-    return handleComputeNodeType(serviceTemplate, substitutionServiceTemplate,
+    ServiceTemplate globalSubstitutionServiceTemplate =
+        HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context);
+    return handleComputeNodeType(serviceTemplate, substitutionServiceTemplate, globalSubstitutionServiceTemplate,
         computeTemplateConsolidationData);
   }
 
   private String handleComputeNodeType(
       ServiceTemplate serviceTemplate,
       ServiceTemplate substitutionServiceTemplate,
+      ServiceTemplate globalSubstitutionServiceTemplate,
       ComputeTemplateConsolidationData computeTemplateConsolidationData) {
     NodeTemplate computeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
         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,
@@ -2698,6 +2826,25 @@ 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 =
@@ -2795,6 +2942,115 @@ public class UnifiedCompositionService {
         .ifPresent(unifiedNestedNodeTypeIdVal -> updateNestedNodeTemplate(
             unifiedNestedNodeTypeIdVal, nestedNodeTemplateId, nestedNodeTemplate,
             mainServiceTemplate, context));
+
+    //updateNestedNodeTemplateRequirement(nestedNodeTemplateId, mainServiceTemplate,
+    //nestedServiceTemplate, context);
+
+    //updateNodeTemplateRequirements(nestedNodeTemplateId, mainServiceTemplate,
+    //nestedServiceTemplate, context);
+
+    //updateNodeDependencyRequirement(mainServiceTemplate, context, nestedNodeTemplate);
+  }
+
+  private void updateNestedNodeTemplateRequirement(String nestedNodeTemplateId,
+                                                   ServiceTemplate mainServiceTemplate,
+                                                   ServiceTemplate nestedServiceTemplate,
+                                                   TranslationContext context){
+    NestedTemplateConsolidationData nestedTemplateConsolidationData =
+        ConsolidationDataUtil
+            .getNestedTemplateConsolidationData(context, mainServiceTemplate, null, nestedNodeTemplateId);
+
+    FileComputeConsolidationData fileComputeConsolidationData =
+        context.getConsolidationData().getComputeConsolidationData().getFileComputeConsolidationData
+            (ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate));
+
+
+    TypeComputeConsolidationData compute =
+        fileComputeConsolidationData.getAllTypeComputeConsolidationData().iterator().next();
+
+    if(Objects.isNull(nestedTemplateConsolidationData)){
+      return;
+    }
+
+    Map<String, List<RequirementAssignmentData>> nodesConnectedOut =
+        nestedTemplateConsolidationData.getNodesConnectedOut();
+
+    if(MapUtils.isEmpty(nodesConnectedOut)){
+      return;
+    }
+
+    updateRequirements(nestedNodeTemplateId, mainServiceTemplate, nestedServiceTemplate, compute,
+        nodesConnectedOut);
+  }
+
+  private void updateRequirements(String nestedNodeTemplateId, ServiceTemplate mainServiceTemplate,
+                                  ServiceTemplate nestedServiceTemplate,
+                                  TypeComputeConsolidationData compute,
+                                  Map<String, List<RequirementAssignmentData>> nodesConnectedOut) {
+    NodeTemplate nodeTemplate =
+        DataModelUtil.getNodeTemplate(mainServiceTemplate, nestedNodeTemplateId);
+
+    for(List<RequirementAssignmentData> requirementAssignmentDataList : nodesConnectedOut.values()){
+      for(RequirementAssignmentData data : requirementAssignmentDataList){
+        if(!data.getRequirementId().equals("dependency")){
+          DataModelUtil.addRequirementAssignment(nodeTemplate, data.getRequirementId(),
+              cloneRequirementAssignment(data.getRequirementAssignment()));
+          updateRequirementInSubMapping(nestedServiceTemplate, compute, data);
+
+        }
+      }
+    }
+
+    removeUneccessaryRequirements(nodeTemplate);
+  }
+
+  private void updateRequirementInSubMapping(ServiceTemplate nestedServiceTemplate,
+                                             TypeComputeConsolidationData compute,
+                                             RequirementAssignmentData data) {
+    List<String> subMappingRequirement =
+        Arrays.asList(compute.getAllComputeNodeTemplateIds().iterator().next(), "dependency");
+    DataModelUtil.addSubstitutionMappingReq(nestedServiceTemplate, data.getRequirementId(),
+        subMappingRequirement);
+  }
+
+
+  private RequirementAssignment cloneRequirementAssignment(RequirementAssignment reqToClone){
+    RequirementAssignment requirementAssignment = new RequirementAssignment();
+
+    requirementAssignment.setRelationship(reqToClone.getRelationship());
+    requirementAssignment.setNode(reqToClone.getNode());
+    requirementAssignment.setCapability(reqToClone.getCapability());
+
+    return requirementAssignment;
+  }
+
+  private void removeUneccessaryRequirements(NodeTemplate nodeTemplate) {
+    List<Map<String, RequirementAssignment>> reqsToRemove = new ArrayList<>();
+    for(Map<String, RequirementAssignment> requirementDefinitionMap : nodeTemplate.getRequirements()) {
+      if (requirementDefinitionMap.containsKey("dependency")) {
+        reqsToRemove.add(requirementDefinitionMap);
+      }
+    }
+
+    nodeTemplate.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 updateNestedNodeTemplateProperties(ServiceTemplate nestedServiceTemplate,
@@ -2829,7 +3085,7 @@ public class UnifiedCompositionService {
     Set<String> relatedNestedNodeTypeIds =
         context.getAllRelatedNestedNodeTypeIds();
 
-      SubstitutionMapping substitutionMappings =
+    SubstitutionMapping substitutionMappings =
         nestedServiceTemplate.getTopology_template().getSubstitution_mappings();
     if(!relatedNestedNodeTypeIds.contains(substitutionMappings.getNode_type())) {
       substitutionMappings.setNode_type(newNestedNodeType);
index a58659f..cebe9ec 100644 (file)
@@ -175,4 +175,14 @@ public class UnifiedCompositionNestedSingleComputeFullTest extends BaseFullTrans
 
         testTranslationWithInit();
     }
+
+    @Test
+    public void testDuplicateReq() throws IOException {
+        inputFilesPath =
+            "/mock/services/heattotosca/fulltest/nestedSingleCompute/duplicateReqs/in";
+        outputFilesPath =
+            "/mock/services/heattotosca/fulltest/nestedSingleCompute/duplicateReqs/out";
+
+        testTranslationWithInit();
+    }
 }
index c24fab0..4b86407 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:
@@ -419,4 +498,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 c24fab0..4b86407 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:
@@ -419,4 +498,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 c24fab0..4b86407 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:
@@ -419,4 +498,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 1da6af4..b112901 100644 (file)
@@ -5,6 +5,103 @@ 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
+      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
+      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_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:
@@ -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 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 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 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 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 b41b4de..c23d70e 100644 (file)
@@ -10535,6 +10535,176 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.ps_server_nested2_1b:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_ps_server_nested_b_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_nested_b_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_ps_server_nested_b_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_ps_server_nested2_1b_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_nested_b_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_ps_server_nested2_1b_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_nested_b_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_ps_server_nested_b_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_nested_b_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_nested_b_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_ps_server_nested_b_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_nested_b_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_nested_b_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+  org.openecomp.resource.vfc.nodes.heat.ps_server_main_1b:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_ps_server_main_b_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_main_b_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_ps_server_main_1b_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_main_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
+      port_ps_server_main_b_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_main_b_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_main_b_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_main_b_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_ps_server_main_b_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_ps_server_main_b_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_ps_server_main_b_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_ps_server_main_1b_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_main_b_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.ps_server_main_1b:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -10956,8 +11126,93 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.cmaui_1c1_nested2:
-    derived_from: org.openecomp.resource.abstract.nodes.VFC
+  org.openecomp.resource.vfc.nodes.heat.cmaui_1c1_main:
+    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
+      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_main_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_cmaui_1c1_main_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+  org.openecomp.resource.vfc.nodes.heat.cmaui_1c1_nested2:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
     properties:
       port_cmaui_port_vlan_requirements:
         type: list
@@ -11041,11 +11296,266 @@ node_types:
         status: SUPPORTED
         entry_schema:
           type: string
-    requirements:
-    - dependency_cmaui_1c1_nested2_cmaui_port:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+  org.openecomp.resource.vfc.nodes.heat.pd_server_nested2_1b:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pd_server_nested_b_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd_server_nested_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
+      port_pd_server_nested_b_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_pd_server_nested_b_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_nested_b_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_pd_server_nested2_1b_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_pd_server_nested2_1b_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd_server_nested_b_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd_server_nested_b_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd_server_nested_b_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd_server_nested_b_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_nested_b_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_nested_b_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+  org.openecomp.resource.vfc.nodes.heat.pd_server_main_1b:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_pd_server_main_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
+      port_pd_server_main_b_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_pd_server_main_1b_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd_server_main_b_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd_server_main_b_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_main_b_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_main_b_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_pd_server_main_b_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd_server_main_b_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_main_b_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_pd_server_main_b_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_pd_server_main_1b_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd_server_main_b_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+  org.openecomp.resource.abstract.nodes.cmaui_1c1_nested2:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    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
+      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_nested2_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_cmaui_1c1_nested2_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    requirements:
+    - dependency_cmaui_1c1_nested2_cmaui_port:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
@@ -11857,370 +12367,914 @@ node_types:
         type: string
         required: true
         status: SUPPORTED
-      vm_image_name:
+      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_main_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_cmaui_1c1_main_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_cmaui_1c1_main_cmaui_port:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_cmaui_1c1_main_cmaui_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_cmaui_1c1_main:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_cmaui_1c1_main:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      disk.device.iops_cmaui_1c1_main:
+        type: org.openecomp.capabilities.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_cmaui_1c1_main:
+        type: org.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_1c1_main:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_cmaui_1c1_main:
+        type: org.openecomp.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_1c1_main:
+        type: org.openecomp.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_1c1_main:
+        type: org.openecomp.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_1c1_main_cmaui_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_cmaui_1c1_main:
+        type: org.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_cmaui_1c1_main:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_cmaui_1c1_main:
+        type: org.openecomp.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_1c1_main:
+        type: org.openecomp.capabilities.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_1c1_main:
+        type: org.openecomp.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_1c1_main:
+        type: org.openecomp.capabilities.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_1c1_main:
+        type: org.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_1c1_main_cmaui_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_cmaui_1c1_main:
+        type: org.openecomp.capabilities.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_1c1_main:
+        type: org.openecomp.capabilities.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_1c1_main:
+        type: org.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_1c1_main:
+        type: org.openecomp.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_1c1_main:
+        type: org.openecomp.capabilities.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_cmaui_1c1_main:
+        type: org.openecomp.capabilities.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_1c1_main:
+        type: org.openecomp.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_1c1_main:
+        type: org.openecomp.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_1c1_main_cmaui_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_cmaui_1c1_main:
+        type: org.openecomp.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_1c1_main_cmaui_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_cmaui_1c1_main:
+        type: org.openecomp.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_1c1_main_cmaui_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_cmaui_1c1_main:
+        type: org.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_1c1_main:
+        type: org.openecomp.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_1c1_main:
+        type: org.openecomp.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_1c1_main:
+        type: org.openecomp.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_1c1_main_cmaui_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_cmaui_1c1_main:
+        type: org.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_1c1_main_cmaui_port:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_cmaui_1c1_main_cmaui_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_cmaui_1c1_main:
+        type: org.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_1c1_main:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_cmaui_1c1_main_cmaui_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_cmaui_1c1_main:
+        type: org.openecomp.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_1c1_main_cmaui_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_cmaui_1c1_main:
+        type: org.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_1c1_main:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_cmaui_1c1_main:
+        type: org.openecomp.capabilities.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_cmaui_1c1_main:
+        type: org.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_1c1_main_cmaui_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.device.usage_cmaui_1c1_main:
+        type: org.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_1c1_main:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_cmaui_1c1_main:
+        type: org.openecomp.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_1c1_main:
+        type: org.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_1c1_main:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_cmaui_1c1_main:
+        type: org.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.pd_server_pattern4_3:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      pd_server_pattern4_ips:
+        type: string
+        required: true
+        status: SUPPORTED
+      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_pattern4_port_2_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd_server_pattern4_port_2_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd_server_pattern4_port_2_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_pattern4_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
+      port_pd_server_pattern4_port_2_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd_server_pattern4_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      net:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_pattern4_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      pd_server_pattern4_flavor:
+        type: string
+        description: Flavor for PD server
+        required: true
+        status: SUPPORTED
+      port_pd_server_pattern4_port_2_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd_server_pattern4_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd_server_pattern4_port_1_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: *id001
+      ps_server_flavor:
+        type: string
+        description: Flavor for PS server
+        required: true
+        status: SUPPORTED
+      port_pd_server_pattern4_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      pd_server_pattern4_image:
+        type: string
+        description: Flavor for PD server
+        required: true
+        status: SUPPORTED
+      port_pd_server_pattern4_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_pattern4_port_2_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_pattern4_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pd_server_pattern4_port_1_subnetpoolid:
         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_main_availability_zone:
-        type: list
+      port_pd_server_pattern4_port_2_subnetpoolid:
+        type: string
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: string
-      compute_cmaui_1c1_main_name:
+      pd_server_pattern4_names:
         type: list
+        description: PD server names
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: string
-      port_cmaui_port_subnetpoolid:
+        entry_schema: *id002
+    attributes:
+      pattern4_attr_1:
         type: string
-        required: true
+        description: pattern4_attr_1_value
         status: SUPPORTED
     requirements:
-    - dependency_cmaui_1c1_main_cmaui_port:
+    - dependency_server_pd_pattern4:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_cmaui_1c1_main_cmaui_port:
+    - local_storage_server_pd_pattern4:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_pd_server_pattern4_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pd_server_pattern4_port_1:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
-    - dependency_cmaui_1c1_main:
+    - dependency_pd_server_pattern4_port_2:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_cmaui_1c1_main:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+    - link_pd_server_pattern4_port_2:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
-        - 0
-        - UNBOUNDED
+        - 1
+        - 1
     capabilities:
-      disk.device.iops_cmaui_1c1_main:
+      disk.root.size_server_pd_pattern4:
         type: org.openecomp.capabilities.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_cmaui_1c1_main:
+      disk.device.write.bytes_server_pd_pattern4:
         type: org.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_1c1_main:
-        type: tosca.capabilities.network.Bindable
+      network.outgoing.bytes_pd_server_pattern4_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_cmaui_1c1_main:
+      disk.allocation_server_pd_pattern4:
         type: org.openecomp.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_1c1_main:
+      disk.device.usage_server_pd_pattern4:
         type: org.openecomp.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_1c1_main:
+      network.outgoing.bytes_pd_server_pattern4_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_cmaui_1c1_main_cmaui_port:
+      disk.write.bytes.rate_server_pd_pattern4:
         type: org.openecomp.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_1c1_main:
+      disk.ephemeral.size_server_pd_pattern4:
         type: org.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_cmaui_1c1_main:
-        type: tosca.capabilities.Endpoint.Admin
+      cpu.delta_server_pd_pattern4:
+        type: org.openecomp.capabilities.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_cmaui_1c1_main:
+      disk.write.bytes_server_pd_pattern4:
         type: org.openecomp.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_1c1_main:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_pd_server_pattern4_port_2:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_cmaui_1c1_main:
+      feature_pd_server_pattern4_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_server_pd_pattern4:
         type: org.openecomp.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_1c1_main:
+      endpoint_server_pd_pattern4:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pd_server_pattern4_port_2:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_pd_server_pattern4_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_pd_pattern4:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_pd_pattern4:
         type: org.openecomp.capabilities.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_1c1_main:
+      instance_server_pd_pattern4:
         type: org.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_1c1_main_cmaui_port:
-        type: tosca.capabilities.Attachment
+      cpu_server_pd_pattern4:
+        type: org.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_1c1_main:
+      disk.device.read.requests_server_pd_pattern4:
         type: org.openecomp.capabilities.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_1c1_main:
+      host_server_pd_pattern4:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_server_pd_pattern4:
         type: org.openecomp.capabilities.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_1c1_main:
+      memory.resident_server_pd_pattern4:
         type: org.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_1c1_main:
+      disk.read.requests_server_pd_pattern4:
         type: org.openecomp.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_1c1_main:
+      disk.read.bytes.rate_server_pd_pattern4:
         type: org.openecomp.capabilities.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_cmaui_1c1_main:
+      disk.device.write.bytes.rate_server_pd_pattern4:
         type: org.openecomp.capabilities.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_1c1_main:
+      disk.device.read.bytes_server_pd_pattern4:
         type: org.openecomp.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_1c1_main:
+      disk.write.requests_server_pd_pattern4:
         type: org.openecomp.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_1c1_main_cmaui_port:
+      disk.device.write.requests.rate_server_pd_pattern4:
         type: org.openecomp.capabilities.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_1c1_main:
+      memory.usage_server_pd_pattern4:
         type: org.openecomp.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_1c1_main_cmaui_port:
+      vcpus_server_pd_pattern4:
         type: org.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_1c1_main:
+      disk.capacity_server_pd_pattern4:
         type: org.openecomp.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_1c1_main_cmaui_port:
+      binding_server_pd_pattern4:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_pd_server_pattern4_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_cmaui_1c1_main:
+      network.outpoing.packets_pd_server_pattern4_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.delta_cmaui_1c1_main:
+      network.incoming.packets.rate_pd_server_pattern4_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_cmaui_1c1_main:
+      network.incoming.bytes_pd_server_pattern4_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_cmaui_1c1_main:
+      disk.device.iops_server_pd_pattern4:
         type: org.openecomp.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_1c1_main_cmaui_port:
+      network.incoming.packets.rate_pd_server_pattern4_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.rate_cmaui_1c1_main:
+      network.incoming.bytes_pd_server_pattern4_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_cmaui_1c1_main_cmaui_port:
-        type: tosca.capabilities.Node
+      disk.device.read.bytes.rate_server_pd_pattern4:
+        type: org.openecomp.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_1c1_main_cmaui_port:
+      disk.device.allocation_server_pd_pattern4:
         type: org.openecomp.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_1c1_main:
+      network.outgoing.bytes.rate_pd_server_pattern4_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_cmaui_1c1_main:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      network.outgoing.bytes.rate_pd_server_pattern4_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_1c1_main_cmaui_port:
+      disk.usage_server_pd_pattern4:
         type: org.openecomp.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_1c1_main:
+      disk.read.bytes_server_pd_pattern4:
         type: org.openecomp.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_1c1_main_cmaui_port:
+      os_server_pd_pattern4:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_server_pd_pattern4:
         type: org.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_1c1_main:
+      disk.iops_server_pd_pattern4:
         type: org.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_1c1_main:
+      scalable_server_pd_pattern4:
         type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_cmaui_1c1_main:
+      binding_pd_server_pattern4_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.rate_pd_server_pattern4_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_cmaui_1c1_main:
+      disk.write.requests.rate_server_pd_pattern4:
         type: org.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_1c1_main_cmaui_port:
+      disk.device.latency_server_pd_pattern4:
+        type: org.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_pattern4_port_1:
         type: tosca.capabilities.network.Bindable
         valid_source_types:
         - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
         - 0
         - UNBOUNDED
-      disk.device.usage_cmaui_1c1_main:
+      network.incoming.bytes.rate_pd_server_pattern4_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_cmaui_1c1_main:
-        type: tosca.capabilities.OperatingSystem
+      network.outgoing.packets.rate_pd_server_pattern4_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.latency_cmaui_1c1_main:
+      disk.device.write.requests_server_pd_pattern4:
         type: org.openecomp.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_1c1_main:
+      network.incoming.packets_pd_server_pattern4_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_1c1_main:
-        type: tosca.capabilities.Node
+      network.outgoing.packets.rate_pd_server_pattern4_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.allocation_cmaui_1c1_main:
+      network.incoming.packets_pd_server_pattern4_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
-  org.openecomp.resource.abstract.nodes.heat.pd_server_pattern4_3:
-    derived_from: org.openecomp.resource.abstract.nodes.VFC
+      disk.device.capacity_server_pd_pattern4:
+        type: org.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.pd_server_pattern4:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
     properties:
       pd_server_pattern4_ips:
         type: string
@@ -12303,7 +13357,8 @@ node_types:
         description: CMAUI1, CMAUI2 server names
         required: true
         status: SUPPORTED
-        entry_schema: *id001
+        entry_schema:
+          type: string
       ps_server_flavor:
         type: string
         description: Flavor for PS server
@@ -12343,7 +13398,8 @@ node_types:
         description: PD server names
         required: true
         status: SUPPORTED
-        entry_schema: *id002
+        entry_schema:
+          type: string
     attributes:
       pattern4_attr_1:
         type: string
@@ -12762,4 +13818,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 0477fc3..5de9f39 100644 (file)
@@ -287,7 +287,7 @@ topology_template:
           floating_ip_count_required:
             is_required: false
       requirements:
-      - dependency:
+      - dependency_server_pd_pattern4:
           capability: tosca.capabilities.Node
           node: test_nested_no_compute
           relationship: tosca.relationships.DependsOn
@@ -319,4 +319,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 e7feb50..ffc5015 100644 (file)
@@ -177,7 +177,7 @@ topology_template:
           floating_ip_count_required:
             is_required: false
       requirements:
-      - dependency:
+      - dependency_server_pd_pattern4:
           capability: tosca.capabilities.Node
           node: test_resourceGroup
           relationship: tosca.relationships.DependsOn
@@ -1498,4 +1498,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 e8301c0..fb315b1 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:
+      port_pd_server_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd_server_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
+      port_pd_server_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      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_pd_server_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_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_pd_server_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -981,17 +1072,41 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.oam_server:
-    derived_from: org.openecomp.resource.abstract.nodes.VFC
+  org.openecomp.resource.vfc.nodes.heat.ps_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
     properties:
-      port_oam_server_port_network:
+      port_ps_server_port_network:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      port_oam_server_port_order:
-        type: integer
+      compute_ps_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_ps_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_ps_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_port_network_role:
+        type: string
         required: true
         status: SUPPORTED
       index_value:
@@ -1002,407 +1117,1114 @@ node_types:
         status: SUPPORTED
         constraints:
         - greater_or_equal: 0
-      port_oam_server_port_security_groups:
-        type: list
+      port_ps_server_port_order:
+        type: integer
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: json
-      port_oam_server_port_replacement_policy:
+      port_ps_server_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_port_fixed_ips:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
       vm_flavor_name:
         type: string
         required: true
         status: SUPPORTED
-      port_oam_server_port_mac_requirements:
+      port_ps_server_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_ps_server_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_ps_server_port_mac_requirements:
         type: org.openecomp.datatypes.network.MacRequirements
         required: true
         status: SUPPORTED
-      port_oam_server_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
+      vm_image_name:
+        type: string
         required: true
         status: SUPPORTED
-      compute_oam_server_availability_zone:
+      port_ps_server_port_replacement_policy:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      vm_image_name:
+      port_ps_server_port_network_role_tag:
         type: string
         required: true
         status: SUPPORTED
-      port_oam_server_port_fixed_ips:
+  org.openecomp.resource.vfc.nodes.heat.sm_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_sm_server_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_vlan_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
-      port_oam_server_port_subnetpoolid:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_sm_server_port_subnetpoolid:
         type: string
         required: true
         status: SUPPORTED
-      port_oam_server_port_network_role_tag:
+      vm_flavor_name:
         type: string
         required: true
         status: SUPPORTED
-      port_oam_server_port_network_role:
+      port_sm_server_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_network_role_tag:
         type: string
         required: true
         status: SUPPORTED
-      port_oam_server_port_vlan_requirements:
+      port_sm_server_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_network:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      compute_oam_server_name:
+          type: string
+      compute_sm_server_name:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      port_oam_server_port_ip_requirements:
+      port_sm_server_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: org.openecomp.datatypes.network.IpRequirements
-    requirements:
-    - dependency_oam_server:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - local_storage_oam_server:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - dependency_oam_server_oam_server_port:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_sm_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_sm_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_sm_server_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_sm_server_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+  org.openecomp.resource.abstract.nodes.oam_server:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_oam_server_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam_server_port_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_oam_server_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_oam_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        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_oam_server_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_oam_server_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_oam_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam_server_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+    requirements:
+    - dependency_oam_server:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_oam_server:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_oam_server_oam_server_port:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_oam_server_oam_server_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      cpu.delta_oam_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_oam_server:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_oam_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_oam_server_oam_server_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_oam_server:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_oam_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_oam_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_oam_server_oam_server_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_oam_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_oam_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_oam_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_oam_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_oam_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_oam_server_oam_server_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_oam_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_oam_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_oam_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_oam_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_oam_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_oam_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_oam_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_oam_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_oam_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_oam_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_oam_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_oam_server_oam_server_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.iops_oam_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_oam_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_oam_server:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_oam_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_oam_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_oam_server_oam_server_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_oam_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_oam_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_oam_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_oam_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_oam_server_oam_server_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_oam_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_oam_server_oam_server_port:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_oam_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
+      endpoint_oam_server:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_oam_server_oam_server_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_oam_server:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_oam_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_oam_server_oam_server_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.rate_oam_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_oam_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_oam_server:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_oam_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_oam_server_oam_server_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_oam_server_oam_server_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_oam_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.cmaui:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    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
+      net2:
+        type: string
+        description: Contrail V2 network
+        required: true
+        status: SUPPORTED
+      net1:
+        type: string
+        description: Neutron network
+        required: true
+        status: SUPPORTED
+      indx:
+        type: float
+        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:
-        - 0
+        - 1
         - UNBOUNDED
-    - link_oam_server_oam_server_port:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      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
-    capabilities:
-      cpu.delta_oam_server:
+        - 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_oam_server:
+      host_server_cmaui:
         type: tosca.capabilities.Container
         valid_source_types:
         - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      disk.usage_oam_server:
+      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.incoming.packets.rate_oam_server_oam_server_port:
+      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
-      feature_oam_server:
-        type: tosca.capabilities.Node
+      attachment_cmaui_port_7:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_oam_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_cmaui_port_8:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_oam_server:
+      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
-      network.outpoing.packets_oam_server_oam_server_port:
+      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.capacity_oam_server:
+      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
-      memory_oam_server:
+      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.read.bytes.rate_oam_server:
+      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.write.bytes_oam_server:
+      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.write.requests_oam_server:
+      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
-      attachment_oam_server_oam_server_port:
-        type: tosca.capabilities.Attachment
+      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
-      cpu_oam_server:
+      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
-      vcpus_oam_server:
+      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.device.read.requests.rate_oam_server:
+      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.allocation_oam_server:
+      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.write.bytes.rate_oam_server:
+      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
-      disk.device.write.requests.rate_oam_server:
+      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
-      instance_oam_server:
+      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
-      memory.resident_oam_server:
+      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.device.read.requests_oam_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_server_cmaui:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_oam_server:
+      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.device.write.requests_oam_server:
+      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
-      binding_oam_server_oam_server_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      os_server_cmaui:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      disk.iops_oam_server:
+      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.capacity_oam_server:
+      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
-      binding_oam_server:
-        type: tosca.capabilities.network.Bindable
+      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
-      disk.device.write.bytes.rate_oam_server:
+      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
-      disk.device.usage_oam_server:
+      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
-      network.incoming.bytes.rate_oam_server_oam_server_port:
+      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.latency_oam_server:
+      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.read.requests_oam_server:
+      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.device.iops_oam_server:
+      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
-      disk.root.size_oam_server:
+      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_oam_server_oam_server_port:
+      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.latency_oam_server:
+      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
-      feature_oam_server_oam_server_port:
-        type: tosca.capabilities.Node
+      binding_cmaui_port_7:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      memory.usage_oam_server:
+      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
-      endpoint_oam_server:
-        type: tosca.capabilities.Endpoint.Admin
+      binding_cmaui_port_8:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      network.outgoing.bytes.rate_oam_server_oam_server_port:
+      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
-      scalable_oam_server:
-        type: tosca.capabilities.Scalable
+      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
-      disk.write.requests.rate_oam_server:
+      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
-      network.incoming.bytes_oam_server_oam_server_port:
+      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
-      disk.device.read.bytes.rate_oam_server:
+      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
-      disk.device.read.bytes_oam_server:
+      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
-      os_oam_server:
-        type: tosca.capabilities.OperatingSystem
+      endpoint_server_cmaui:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_oam_server:
+      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
-      network.incoming.packets_oam_server_oam_server_port:
+      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_oam_server_oam_server_port:
+      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.ephemeral.size_oam_server:
+      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:
@@ -5292,3 +6114,94 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.oam_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_oam_server_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam_server_port_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_oam_server_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_oam_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        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_oam_server_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_oam_server_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_oam_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam_server_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
\ No newline at end of file
index 20819de..65ff3a0 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:
@@ -1262,25 +1341,39 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.oam:
+  org.openecomp.resource.abstract.nodes.oam_1:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
-      port_oam02_port_network:
+      port_oam01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_oam01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_oam01_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
-      port_oam02_port_ip_requirements:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_oam01_port_security_groups:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_oam02_port_network_role:
-        type: string
+          type: json
+      port_oam01_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
@@ -1289,79 +1382,65 @@ node_types:
         status: SUPPORTED
         constraints:
         - greater_or_equal: 0
-      port_oam02_port_fixed_ips:
+      port_oam01_port_replacement_policy:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+          type: string
       vm_flavor_name:
         type: string
         required: true
         status: SUPPORTED
-      port_oam02_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
-        required: true
-        status: SUPPORTED
-      port_oam02_port_security_groups:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: json
-      port_oam02_port_subnetpoolid:
-        type: string
-        required: true
-        status: SUPPORTED
-      port_oam02_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
-        required: true
-        status: SUPPORTED
-      port_oam02_port_order:
-        type: integer
-        required: true
-        status: SUPPORTED
       vm_image_name:
         type: string
         required: true
         status: SUPPORTED
-      port_oam02_port_network_role_tag:
+      port_oam01_port_network_role:
         type: string
         required: true
         status: SUPPORTED
-      port_oam02_port_replacement_policy:
+      port_oam01_port_fixed_ips:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_oam01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
       compute_oam_availability_zone:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      port_oam02_port_vlan_requirements:
-        type: list
+      port_oam01_port_network_role_tag:
+        type: string
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
       compute_oam_name:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
+      port_oam01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
     requirements:
-    - dependency_oam_oam02_port:
+    - dependency_oam_oam01_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_oam_oam02_port:
+    - link_oam_oam01_port:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
@@ -1388,61 +1467,60 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_oam_oam02_port:
+      network.outgoing.packets.rate_oam_oam01_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_oam:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_oam_oam01_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      memory.resident_oam:
+      network.outgoing.bytes.rate_oam_oam01_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_oam:
+      disk.usage_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_oam_oam02_port:
+      memory.resident_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_oam:
+      disk.device.write.bytes_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_oam_oam02_port:
+      disk.read.bytes_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
-      binding_oam_oam02_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
       scalable_oam:
         type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_oam_oam02_port:
+      attachment_oam_oam01_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_oam_oam01_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:
@@ -1465,6 +1543,12 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+      network.incoming.packets.rate_oam_oam01_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_oam:
         type: tosca.capabilities.network.Bindable
         occurrences:
@@ -1500,6 +1584,11 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+      feature_oam_oam01_port:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
       disk.write.requests_oam:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
@@ -1518,7 +1607,7 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_oam_oam02_port:
+      network.outpoing.packets_oam_oam01_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:
@@ -1530,31 +1619,31 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_oam_oam02_port:
+      memory_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_oam:
+      cpu.delta_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_oam:
+      disk.device.write.requests_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_oam:
+      disk.device.read.requests.rate_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.rate_oam:
+      network.outgoing.bytes_oam_oam01_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:
@@ -1608,36 +1697,31 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_oam:
+      network.incoming.bytes.rate_oam_oam01_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_oam:
+      disk.device.read.requests_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_oam:
+      disk.iops_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_oam_oam02_port:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      cpu_util_oam:
+      disk.read.bytes.rate_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_oam_oam02_port:
+      cpu_util_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:
@@ -1660,83 +1744,84 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_oam_oam02_port:
+      disk.write.bytes_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
-      attachment_oam_oam02_port:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.write.bytes_oam:
+      disk.read.requests_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.requests_oam:
+      disk.device.capacity_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_oam:
+      network.incoming.packets_oam_oam01_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.oam_1:
+  org.openecomp.resource.abstract.nodes.cmaui_1:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
-      port_oam01_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
-        required: true
-        status: SUPPORTED
-      port_oam01_port_subnetpoolid:
+      port_cmaui01_port_network_role:
         type: string
         required: true
         status: SUPPORTED
-      port_oam01_port_order:
+      port_cmaui01_port_order:
         type: integer
         required: true
         status: SUPPORTED
-      port_oam01_port_ip_requirements:
+      port_cmaui01_port_replacement_policy:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_oam01_port_security_groups:
+          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_cmaui01_port_security_groups:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: json
-      port_oam01_port_network:
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_cmaui_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
+      port_cmaui01_port_vlan_requirements:
+        type: list
+        required: true
         status: SUPPORTED
-        constraints:
-        - greater_or_equal: 0
-      port_oam01_port_replacement_policy:
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_cmaui_availability_zone:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      vm_flavor_name:
+      port_cmaui01_port_subnetpoolid:
         type: string
         required: true
         status: SUPPORTED
@@ -1744,64 +1829,58 @@ node_types:
         type: string
         required: true
         status: SUPPORTED
-      port_oam01_port_network_role:
+      port_cmaui01_port_network_role_tag:
         type: string
         required: true
         status: SUPPORTED
-      port_oam01_port_fixed_ips:
-        type: list
+      port_cmaui01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
-      port_oam01_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
+      port_cmaui01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
         required: true
         status: SUPPORTED
-      compute_oam_availability_zone:
+      port_cmaui01_port_fixed_ips:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
-      port_oam01_port_network_role_tag:
-        type: string
-        required: true
-        status: SUPPORTED
-      compute_oam_name:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_cmaui01_port_network:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      port_oam01_port_vlan_requirements:
+      port_cmaui01_port_ip_requirements:
         type: list
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
+          type: org.openecomp.datatypes.network.IpRequirements
     requirements:
-    - dependency_oam_oam01_port:
+    - dependency_cmaui_cmaui01_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_oam_oam01_port:
+    - link_cmaui_cmaui01_port:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
-    - dependency_oam:
+    - dependency_cmaui:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_oam:
+    - local_storage_cmaui:
         capability: tosca.capabilities.Attachment
         node: tosca.nodes.BlockStorage
         relationship: tosca.relationships.AttachesTo
@@ -1809,5173 +1888,5053 @@ node_types:
         - 0
         - UNBOUNDED
     capabilities:
-      cpu_oam:
+      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
-      network.outgoing.packets.rate_oam_oam01_port:
+      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
-      binding_oam_oam01_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
-      network.outgoing.bytes.rate_oam_oam01_port:
+      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.usage_oam:
+      network.outgoing.bytes_cmaui_cmaui01_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_oam:
+      network.incoming.packets.rate_cmaui_cmaui01_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_oam:
+      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
-      disk.read.bytes_oam:
+      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
-      scalable_oam:
-        type: tosca.capabilities.Scalable
+      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
-      attachment_oam_oam01_port:
-        type: tosca.capabilities.Attachment
+      host_cmaui:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_oam_oam01_port:
+      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
-      feature_oam:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.allocation_oam:
+      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.device.usage_oam:
+      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
-      network.incoming.packets.rate_oam_oam01_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      scalable_cmaui:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      binding_oam:
-        type: tosca.capabilities.network.Bindable
+      feature_cmaui_cmaui01_port:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_oam:
+      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
-      disk.write.bytes.rate_oam:
+      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.device.write.bytes.rate_oam:
+      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
-      disk.device.allocation_oam:
+      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
-      disk.ephemeral.size_oam:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      os_cmaui:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      feature_oam_oam01_port:
-        type: tosca.capabilities.Node
+      network.outgoing.bytes.rate_cmaui_cmaui01_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_oam:
+      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
-      disk.capacity_oam:
+      network.incoming.bytes_cmaui_cmaui01_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_oam:
+      network.outgoing.packets.rate_cmaui_cmaui01_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_oam_oam01_port:
+      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.root.size_oam:
+      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
-      memory_oam:
+      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
-      cpu.delta_oam:
+      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.device.write.requests_oam:
+      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
-      disk.device.read.requests.rate_oam:
+      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.bytes_oam_oam01_port:
+      network.outpoing.packets_cmaui_cmaui01_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_oam:
+      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.latency_oam:
+      attachment_cmaui_cmaui01_port:
+        type: tosca.capabilities.Attachment
+        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.iops_oam:
+      network.incoming.packets_cmaui_cmaui01_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_oam:
+      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
-      disk.device.write.requests.rate_oam:
+      network.incoming.bytes.rate_cmaui_cmaui01_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_oam:
+      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
-      host_oam:
-        type: tosca.capabilities.Container
+      binding_cmaui_cmaui01_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_cmaui:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_oam:
-        type: tosca.capabilities.Endpoint.Admin
+      binding_cmaui:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_oam_oam01_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_cmaui:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_oam:
+      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.iops_oam:
+      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
-      disk.read.bytes.rate_oam:
+      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
-      cpu_util_oam:
+      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
-      os_oam:
-        type: tosca.capabilities.OperatingSystem
+      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
-      memory.usage_oam:
+      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
-      disk.latency_oam:
+      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.write.bytes_oam:
+      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.read.requests_oam:
+      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
-      disk.device.capacity_oam:
+      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
-      network.incoming.packets_oam_oam01_port:
+      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.cmaui:
-    derived_from: org.openecomp.resource.abstract.nodes.VFC
+  org.openecomp.resource.abstract.nodes.heat.nested1:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
     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_cmaui02_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
-        required: true
-        status: SUPPORTED
-      port_cmaui02_port_fixed_ips:
+      cmaui_names:
         type: list
+        description: CMAUI1, CMAUI2 server names
         required: true
         status: SUPPORTED
         entry_schema:
-          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
-      port_cmaui02_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
+          type: string
+      p1:
+        type: string
+        description: UID of OAM network
         required: true
         status: SUPPORTED
-      vm_flavor_name:
+      p2:
         type: string
+        description: UID of OAM network
         required: true
         status: SUPPORTED
-      compute_cmaui_name:
-        type: list
+      cmaui_image:
+        type: string
+        description: Image for CMAUI server
         required: true
         status: SUPPORTED
-        entry_schema:
-          type: string
-      port_cmaui02_port_vlan_requirements:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      compute_cmaui_availability_zone:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-      vm_image_name:
+      cmaui_flavor:
         type: string
+        description: Flavor for CMAUI server
         required: true
         status: SUPPORTED
-      port_cmaui02_port_ip_requirements:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_cmaui02_port_order:
-        type: integer
-        required: true
-        status: SUPPORTED
-      port_cmaui02_port_replacement_policy:
+      security_group_name:
         type: list
+        description: CMAUI1, CMAUI2 server names
         required: true
         status: SUPPORTED
         entry_schema:
           type: string
-      port_cmaui02_port_network_role:
+      availability_zone_0:
         type: string
+        description: availabilityzone name
         required: true
         status: SUPPORTED
-      port_cmaui02_port_security_groups:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: json
-      port_cmaui02_port_subnetpoolid:
+      cmaui_oam_ips:
         type: string
         required: true
         status: SUPPORTED
-      port_cmaui02_port_network:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-      port_cmaui02_port_network_role_tag:
+      net:
         type: string
         required: true
         status: SUPPORTED
     requirements:
-    - dependency_cmaui_cmaui02_port:
+    - dependency_server_cmaui_2:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_cmaui_cmaui02_port:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+    - local_storage_server_cmaui_2:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
         occurrences:
-        - 1
-        - 1
-    - dependency_cmaui:
+        - 0
+        - UNBOUNDED
+    - dependency_server_cmaui_1:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_cmaui:
+    - local_storage_server_cmaui_1:
         capability: tosca.capabilities.Attachment
         node: tosca.nodes.BlockStorage
         relationship: tosca.relationships.AttachesTo
         occurrences:
         - 0
         - UNBOUNDED
-    capabilities:
-      network.incoming.bytes_cmaui_cmaui02_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_cmaui01_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
         occurrences:
-        - 1
+        - 0
         - 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.
+    - link_cmaui01_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
+        - 1
+    - dependency_cmaui02_port_2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
         - 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.
+    - link_cmaui02_port_2:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
+        - 1
+    - dependency_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
         - 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.
+    - dependency_oam01_port_1_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
         occurrences:
-        - 1
+        - 0
         - 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.
+    - link_oam01_port_1_test_nested2Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
+        - 1
+    - dependency_oam02_port_2_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
         - 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.
+    - link_oam02_port_2_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
-      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.
+    - dependency_pd01_port_1_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      host_cmaui:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+    - link_pd01_port_1_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
+        - 1
+    - dependency_pd02_port_2_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
         - 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.
+    - link_pd02_port_2_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
+        - 1
+    - dependency_server_ps_2_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
         - UNBOUNDED
-      feature_cmaui_cmaui02_port:
-        type: tosca.capabilities.Node
+    - local_storage_server_ps_2_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
         occurrences:
-        - 1
+        - 0
         - 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.
+    - dependency_server_ps_1_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
         occurrences:
-        - 1
+        - 0
         - 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.
+    - local_storage_server_ps_1_test_nested3Level_test_nested2Level:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      scalable_cmaui:
-        type: tosca.capabilities.Scalable
+    - dependency_server_oam_2_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
         occurrences:
-        - 1
+        - 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.
+    - local_storage_server_oam_2_test_nested2Level:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
         occurrences:
-        - 1
+        - 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.
+    - dependency_server_oam_1_test_nested2Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
         occurrences:
-        - 1
+        - 0
         - 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.
+    - local_storage_server_oam_1_test_nested2Level:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      memory.usage_cmaui:
+    capabilities:
+      memory.resident_server_ps_1_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_cmaui:
-        type: tosca.capabilities.OperatingSystem
+      disk.device.write.requests_server_oam_2_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_cmaui:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_pd01_port_1_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets.rate_cmaui_cmaui02_port:
+      network.outgoing.packets.rate_cmaui02_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
-      binding_cmaui_cmaui02_port:
+      binding_cmaui02_port_2:
         type: tosca.capabilities.network.Bindable
         valid_source_types:
         - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
         - 0
         - UNBOUNDED
-      disk.device.usage_cmaui:
+      disk.device.latency_server_cmaui_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.iops_cmaui:
+      network.outgoing.bytes.rate_cmaui02_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_cmaui:
+      disk.device.latency_server_cmaui_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_cmaui:
+      disk.device.read.bytes_server_ps_2_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_cmaui:
+      cpu.delta_server_oam_1_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_cmaui:
+      disk.root.size_server_cmaui_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_cmaui02_port:
+      disk.root.size_server_cmaui_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_cmaui:
+      disk.device.latency_server_ps_1_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_cmaui:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      attachment_cmaui01_port_1:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_cmaui:
+      disk.write.bytes_server_ps_1_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_cmaui:
+      network.incoming.bytes.rate_cmaui01_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
+      disk.capacity_server_oam_1_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_cmaui02_port:
+      disk.read.requests_server_cmaui_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
-      binding_cmaui:
-        type: tosca.capabilities.network.Bindable
+      disk.read.requests_server_cmaui_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_cmaui02_port:
-        type: tosca.capabilities.Attachment
+      memory.resident_server_oam_1_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_cmaui:
-        type: tosca.capabilities.Endpoint.Admin
+      binding_server_ps_1_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_cmaui:
+      memory.usage_server_oam_1_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_cmaui:
+      network.incoming.bytes_pd01_port_1_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_cmaui:
+      disk.root.size_server_ps_1_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_cmaui:
+      cpu.delta_server_oam_2_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_cmaui02_port:
+      disk.device.read.bytes.rate_server_cmaui_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.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.
+      feature_cmaui02_port_2:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_cmaui:
+      disk.device.read.bytes.rate_server_cmaui_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_cmaui_cmaui02_port:
+      disk.read.bytes_server_cmaui_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
-      instance_cmaui:
+      disk.read.bytes_server_cmaui_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_cmaui:
+      network.outgoing.packets.rate_oam02_port_2_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_cmaui02_port:
+      disk.device.read.bytes_server_cmaui_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_cmaui:
+      disk.device.read.bytes_server_cmaui_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_util_cmaui:
+      disk.write.bytes_server_ps_2_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_cmaui02_port:
+      disk.device.write.requests_server_ps_2_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_cmaui:
+      memory.resident_server_oam_2_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_1:
-    derived_from: org.openecomp.resource.abstract.nodes.VFC
-    properties:
-      port_cmaui01_port_network_role:
-        type: string
-        required: true
-        status: SUPPORTED
-      port_cmaui01_port_order:
-        type: integer
-        required: true
-        status: SUPPORTED
-      port_cmaui01_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_cmaui01_port_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_cmaui01_port_vlan_requirements:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.VlanRequirements
-      compute_cmaui_availability_zone:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-      port_cmaui01_port_subnetpoolid:
-        type: string
-        required: true
-        status: SUPPORTED
-      vm_image_name:
-        type: string
-        required: true
-        status: SUPPORTED
-      port_cmaui01_port_network_role_tag:
-        type: string
-        required: true
-        status: SUPPORTED
-      port_cmaui01_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
-        required: true
-        status: SUPPORTED
-      port_cmaui01_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
-        required: true
-        status: SUPPORTED
-      port_cmaui01_port_fixed_ips:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
-      port_cmaui01_port_network:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-      port_cmaui01_port_ip_requirements:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-    requirements:
-    - dependency_cmaui_cmaui01_port:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - link_cmaui_cmaui01_port:
-        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:
+      disk.write.requests.rate_server_cmaui_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_cmaui:
+      disk.write.requests.rate_server_cmaui_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_cmaui:
+      disk.iops_server_oam_2_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_cmaui01_port:
+      network.outpoing.packets_cmaui02_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_cmaui01_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_pd01_port_1_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_cmaui:
+      disk.device.latency_server_ps_2_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_cmaui:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_oam02_port_2_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      disk.write.bytes.rate_cmaui:
+      disk.write.requests_server_oam_2_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_cmaui:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      endpoint_server_ps_2_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_cmaui:
+      disk.ephemeral.size_server_cmaui_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_cmaui:
+      disk.ephemeral.size_server_cmaui_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_cmaui:
+      cpu_util_server_ps_2_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_cmaui:
-        type: tosca.capabilities.Scalable
+      network.outgoing.bytes_cmaui02_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_cmaui_cmaui01_port:
+      feature_server_ps_1_test_nested3Level_test_nested2Level:
         type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_cmaui:
+      disk.write.requests.rate_server_ps_2_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_cmaui:
+      disk.device.capacity_server_oam_1_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_cmaui:
+      disk.ephemeral.size_server_ps_2_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_cmaui:
+      network.incoming.bytes.rate_oam02_port_2_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_cmaui:
-        type: tosca.capabilities.OperatingSystem
+      disk.device.read.requests.rate_server_oam_2_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_cmaui01_port:
+      disk.read.bytes_server_oam_1_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_cmaui:
+      network.outpoing.packets_oam01_port_1_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_cmaui01_port:
+      disk.device.write.bytes.rate_server_ps_2_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_cmaui01_port:
+      network.outgoing.bytes.rate_oam02_port_2_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_cmaui:
+      disk.read.bytes_server_ps_2_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.iops_cmaui:
+      feature_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pd01_port_1_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      attachment_oam02_port_2_test_nested2Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_server_cmaui_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_cmaui:
+      cpu_util_server_ps_1_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_cmaui:
+      disk.device.write.requests_server_cmaui_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_cmaui:
+      disk.device.write.requests_server_oam_1_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_cmaui:
+      disk.device.write.bytes.rate_server_oam_2_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_cmaui01_port:
+      network.outgoing.bytes_pd02_port_2_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.requests_cmaui:
+      disk.capacity_server_oam_2_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_cmaui01_port:
-        type: tosca.capabilities.Attachment
+      disk.device.write.bytes.rate_server_cmaui_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_cmaui:
+      disk.ephemeral.size_server_ps_1_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_cmaui01_port:
+      network.incoming.packets.rate_pd02_port_2_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_cmaui:
+      cpu_util_server_cmaui_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_cmaui01_port:
+      disk.device.read.requests_server_oam_1_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_cmaui:
+      disk.device.write.bytes_server_oam_2_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_cmaui01_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.device.write.requests.rate_server_oam_2_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:
-        - 0
+        - 1
         - UNBOUNDED
-      feature_cmaui:
-        type: tosca.capabilities.Node
+      cpu_server_oam_2_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:
-        type: tosca.capabilities.network.Bindable
+      disk.device.read.bytes_server_ps_1_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_cmaui:
-        type: tosca.capabilities.Endpoint.Admin
+      disk.root.size_server_ps_2_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_cmaui:
+      disk.write.requests.rate_server_ps_1_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_cmaui:
+      cpu_util_server_cmaui_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_cmaui:
+      network.incoming.packets_cmaui02_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.rate_cmaui:
+      disk.device.write.bytes.rate_server_cmaui_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.usage_cmaui:
+      disk.device.usage_server_oam_1_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_cmaui:
+      disk.write.bytes.rate_server_cmaui_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
-      instance_cmaui:
+      cpu_util_server_oam_1_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_cmaui:
+      disk.device.write.bytes_server_cmaui_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.bytes_cmaui:
+      disk.write.bytes.rate_server_cmaui_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_cmaui:
+      attachment_oam01_port_1_test_nested2Level:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_server_cmaui_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_cmaui:
+      disk.write.bytes_server_oam_2_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.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_server_cmaui_2:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+      os_server_ps_2_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-    - local_storage_server_cmaui_2:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+      disk.allocation_server_ps_2_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:
-        - 0
+        - 1
         - UNBOUNDED
-    - dependency_server_cmaui_1:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+      cpu.delta_server_ps_1_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:
-        - 0
+        - 1
         - UNBOUNDED
-    - local_storage_server_cmaui_1:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+      network.incoming.bytes_pd02_port_2_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:
-        - 0
+        - 1
         - UNBOUNDED
-    - dependency_cmaui01_port_1:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+      binding_server_cmaui_1:
+        type: tosca.capabilities.network.Bindable
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-    - link_cmaui01_port_1:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      disk.device.usage_server_oam_2_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
-        - 1
-    - dependency_cmaui02_port_2:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
         - UNBOUNDED
-    - link_cmaui02_port_2:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      binding_server_cmaui_2:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
-        - 1
-    - dependency_test_nested2Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
         - UNBOUNDED
-    - dependency_oam01_port_1_test_nested2Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+      disk.allocation_server_oam_1_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:
-        - 0
+        - 1
         - UNBOUNDED
-    - link_oam01_port_1_test_nested2Level:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      scalable_server_cmaui_2:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
-        - 1
-    - dependency_oam02_port_2_test_nested2Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
         - UNBOUNDED
-    - link_oam02_port_2_test_nested2Level:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      scalable_server_cmaui_1:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
-        - 1
-    - dependency_test_nested3Level_test_nested2Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+        - UNBOUNDED
+      disk.device.usage_server_ps_2_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:
-        - 0
+        - 1
         - UNBOUNDED
-    - dependency_pd01_port_1_test_nested3Level_test_nested2Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - link_pd01_port_1_test_nested3Level_test_nested2Level:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      network.incoming.bytes_cmaui01_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
-        - 1
-    - dependency_pd02_port_2_test_nested3Level_test_nested2Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
         - UNBOUNDED
-    - link_pd02_port_2_test_nested3Level_test_nested2Level:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      instance_server_oam_2_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
-        - 1
-    - dependency_server_ps_2_test_nested3Level_test_nested2Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - local_storage_server_ps_2_test_nested3Level_test_nested2Level:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - dependency_server_ps_1_test_nested3Level_test_nested2Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - local_storage_server_ps_1_test_nested3Level_test_nested2Level:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
-        occurrences:
-        - 0
         - UNBOUNDED
-    - dependency_server_oam_2_test_nested2Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+      endpoint_server_ps_1_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-    - local_storage_server_oam_2_test_nested2Level:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+      network.incoming.packets_oam02_port_2_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:
-        - 0
+        - 1
         - UNBOUNDED
-    - dependency_server_oam_1_test_nested2Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+      endpoint_server_cmaui_1:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-    - local_storage_server_oam_1_test_nested2Level:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+      endpoint_server_cmaui_2:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-    capabilities:
-      memory.resident_server_ps_1_test_nested3Level_test_nested2Level:
+      network.outpoing.packets_oam02_port_2_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_oam_2_test_nested2Level:
+      disk.device.latency_server_oam_1_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_pd01_port_1_test_nested3Level_test_nested2Level:
+      feature_oam02_port_2_test_nested2Level:
         type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_cmaui02_port_2:
+      disk.device.allocation_server_ps_1_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_cmaui02_port_2:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
-      disk.device.latency_server_cmaui_1:
+      memory.usage_server_ps_1_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_cmaui02_port_2:
+      network.incoming.packets_pd02_port_2_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.latency_server_cmaui_2:
+      disk.device.read.requests_server_ps_2_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_ps_2_test_nested3Level_test_nested2Level:
+      disk.device.capacity_server_oam_2_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_oam_1_test_nested2Level:
+      disk.read.requests_server_oam_1_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_2:
+      disk.device.read.bytes.rate_server_ps_1_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_1:
+      disk.allocation_server_oam_2_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_ps_1_test_nested3Level_test_nested2Level:
+      os_server_oam_2_test_nested2Level:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_ps_1_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_cmaui01_port_1:
-        type: tosca.capabilities.Attachment
+      disk.device.allocation_server_cmaui_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_ps_1_test_nested3Level_test_nested2Level:
+      disk.device.allocation_server_cmaui_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_cmaui01_port_1:
+      vcpus_server_oam_1_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_oam_1_test_nested2Level:
+      network.incoming.packets_oam01_port_1_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_2:
+      disk.device.write.bytes_server_ps_2_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.requests_server_cmaui_1:
+      memory_server_cmaui_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_oam_1_test_nested2Level:
+      network.outgoing.bytes.rate_pd01_port_1_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_server_ps_1_test_nested3Level_test_nested2Level:
+      binding_server_ps_2_test_nested3Level_test_nested2Level:
         type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_server_oam_1_test_nested2Level:
+      memory.usage_server_oam_2_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_pd01_port_1_test_nested3Level_test_nested2Level:
+      disk.iops_server_oam_1_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_ps_1_test_nested3Level_test_nested2Level:
+      disk.usage_server_ps_2_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_oam_2_test_nested2Level:
+      network.outgoing.bytes_pd01_port_1_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_2:
+      disk.capacity_server_ps_1_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_cmaui02_port_2:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.bytes.rate_server_cmaui_1:
+      disk.latency_server_oam_1_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_2:
+      vcpus_server_ps_2_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_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_oam01_port_1_test_nested2Level:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_oam02_port_2_test_nested2Level:
+      network.outgoing.bytes_cmaui01_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_1:
+      instance_server_cmaui_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.bytes_server_cmaui_2:
+      disk.device.capacity_server_cmaui_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_ps_2_test_nested3Level_test_nested2Level:
+      memory.resident_server_ps_2_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_server_ps_2_test_nested3Level_test_nested2Level:
+      network.incoming.packets.rate_cmaui01_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_oam_2_test_nested2Level:
+      disk.read.requests_server_ps_1_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_1:
+      instance_server_cmaui_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_server_cmaui_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_server_ps_1_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_server_oam_2_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.
+      scalable_server_oam_1_test_nested2Level:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      network.outpoing.packets_cmaui02_port_2:
+      network.incoming.packets.rate_pd01_port_1_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_pd01_port_1_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.latency_server_ps_2_test_nested3Level_test_nested2Level:
+      disk.write.requests_server_ps_2_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_oam02_port_2_test_nested2Level:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
-      disk.write.requests_server_oam_2_test_nested2Level:
+      cpu_server_ps_1_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_ps_2_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.Endpoint.Admin
+      disk.device.read.requests_server_cmaui_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.ephemeral.size_server_cmaui_1:
+      disk.device.read.requests_server_cmaui_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_cmaui_2:
+      cpu.delta_server_cmaui_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_server_ps_2_test_nested3Level_test_nested2Level:
+      disk.device.write.bytes_server_oam_1_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_cmaui02_port_2:
+      cpu.delta_server_cmaui_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_server_ps_1_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.Node
+      cpu_server_oam_1_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_ps_2_test_nested3Level_test_nested2Level:
+      disk.device.write.bytes.rate_server_oam_1_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_oam_1_test_nested2Level:
+      disk.device.read.bytes_server_oam_2_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.ephemeral.size_server_ps_2_test_nested3Level_test_nested2Level:
+      disk.usage_server_oam_1_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_oam02_port_2_test_nested2Level:
+      binding_pd02_port_2_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.read.bytes.rate_server_oam_2_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_oam_2_test_nested2Level:
+      network.outpoing.packets_pd01_port_1_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_oam_1_test_nested2Level:
+      disk.write.bytes.rate_server_ps_2_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_oam01_port_1_test_nested2Level:
+      disk.device.allocation_server_oam_2_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_ps_2_test_nested3Level_test_nested2Level:
+      disk.device.usage_server_cmaui_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_oam02_port_2_test_nested2Level:
+      disk.device.usage_server_cmaui_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_server_ps_2_test_nested3Level_test_nested2Level:
+      network.outgoing.packets.rate_cmaui01_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_test_nested2Level:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      binding_pd01_port_1_test_nested3Level_test_nested2Level:
+      binding_cmaui01_port_1:
         type: tosca.capabilities.network.Bindable
         valid_source_types:
         - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
         - 0
         - UNBOUNDED
-      attachment_oam02_port_2_test_nested2Level:
-        type: tosca.capabilities.Attachment
+      scalable_server_oam_2_test_nested2Level:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests_server_cmaui_2:
+      disk.capacity_server_ps_2_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_ps_1_test_nested3Level_test_nested2Level:
+      network.incoming.packets_pd01_port_1_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_server_cmaui_1:
+      disk.device.write.requests.rate_server_ps_2_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_server_oam_1_test_nested2Level:
+      network.outgoing.bytes.rate_cmaui01_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_oam_2_test_nested2Level:
+      memory_server_ps_2_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_pd02_port_2_test_nested3Level_test_nested2Level:
+      disk.read.bytes.rate_server_oam_1_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_oam_2_test_nested2Level:
+      disk.device.capacity_server_ps_2_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.rate_server_cmaui_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_server_ps_1_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_server_ps_1_test_nested3Level_test_nested2Level:
+      disk.device.write.requests.rate_server_cmaui_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_pd02_port_2_test_nested3Level_test_nested2Level:
+      disk.device.write.requests.rate_server_cmaui_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_server_cmaui_1:
+      disk.device.allocation_server_oam_1_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_oam_1_test_nested2Level:
+      network.incoming.bytes.rate_cmaui02_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_server_oam_2_test_nested2Level:
+      endpoint_server_oam_2_test_nested2Level:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_pd02_port_2_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_oam_2_test_nested2Level:
+      disk.latency_server_ps_2_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_oam_2_test_nested2Level:
+      disk.iops_server_ps_2_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_ps_1_test_nested3Level_test_nested2Level:
+      attachment_cmaui02_port_2:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_server_oam_2_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_ps_2_test_nested3Level_test_nested2Level:
+      disk.latency_server_ps_1_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_ps_1_test_nested3Level_test_nested2Level:
+      disk.device.iops_server_cmaui_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_server_cmaui_2:
+      disk.device.iops_server_cmaui_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_cmaui02_port_2:
+      disk.device.capacity_server_cmaui_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_2:
+      feature_server_oam_1_test_nested2Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_ps_2_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_server_ps_1_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_oam_1_test_nested2Level:
+      memory_server_cmaui_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.bytes.rate_server_cmaui_2:
+      cpu_server_cmaui_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_util_server_oam_1_test_nested2Level:
+      cpu_server_cmaui_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_server_cmaui_2:
+      disk.read.bytes.rate_server_ps_2_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_1:
+      disk.usage_server_oam_2_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_oam01_port_1_test_nested2Level:
-        type: tosca.capabilities.Attachment
+      binding_server_oam_1_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_server_cmaui_1:
+      disk.device.read.requests.rate_server_ps_2_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_oam_2_test_nested2Level:
+      disk.capacity_server_cmaui_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_server_ps_2_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.OperatingSystem
+      network.outpoing.packets_pd02_port_2_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_ps_2_test_nested3Level_test_nested2Level:
+      disk.read.requests_server_oam_2_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_ps_1_test_nested3Level_test_nested2Level:
+      disk.capacity_server_cmaui_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_pd02_port_2_test_nested3Level_test_nested2Level:
+      disk.device.iops_server_oam_2_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_1:
-        type: tosca.capabilities.network.Bindable
+      instance_server_ps_2_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_oam_2_test_nested2Level:
+      disk.write.bytes.rate_server_ps_1_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_server_cmaui_2:
-        type: tosca.capabilities.network.Bindable
+      host_server_oam_2_test_nested2Level:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_server_oam_1_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.
+      feature_server_oam_2_test_nested2Level:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      scalable_server_cmaui_2:
-        type: tosca.capabilities.Scalable
+      disk.allocation_server_ps_1_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_1:
-        type: tosca.capabilities.Scalable
+      disk.iops_server_cmaui_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_server_ps_2_test_nested3Level_test_nested2Level:
+      memory_server_ps_1_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_cmaui01_port_1:
+      disk.iops_server_cmaui_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_oam_2_test_nested2Level:
+      disk.root.size_server_oam_1_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_ps_1_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.Endpoint.Admin
+      disk.read.bytes.rate_server_oam_2_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_oam02_port_2_test_nested2Level:
+      disk.device.capacity_server_ps_1_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_1:
-        type: tosca.capabilities.Endpoint.Admin
+      feature_cmaui01_port_1:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_server_cmaui_2:
-        type: tosca.capabilities.Endpoint.Admin
+      disk.device.read.requests.rate_server_ps_1_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_oam02_port_2_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.
+      endpoint_server_oam_1_test_nested2Level:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_server_oam_1_test_nested2Level:
+      disk.device.read.bytes.rate_server_oam_1_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_oam02_port_2_test_nested2Level:
-        type: tosca.capabilities.Node
+      network.incoming.packets.rate_oam02_port_2_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_ps_1_test_nested3Level_test_nested2Level:
+      disk.write.requests.rate_server_oam_2_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_ps_1_test_nested3Level_test_nested2Level:
+      disk.device.read.bytes_server_oam_1_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_pd02_port_2_test_nested3Level_test_nested2Level:
+      network.outgoing.packets.rate_oam01_port_1_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_ps_2_test_nested3Level_test_nested2Level:
+      disk.device.read.bytes.rate_server_ps_2_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_oam_2_test_nested2Level:
+      disk.device.write.bytes.rate_server_ps_1_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.requests_server_oam_1_test_nested2Level:
+      disk.device.iops_server_ps_2_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_ps_1_test_nested3Level_test_nested2Level:
+      disk.write.bytes_server_cmaui_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_server_oam_2_test_nested2Level:
+      disk.write.bytes_server_cmaui_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
-      os_server_oam_2_test_nested2Level:
-        type: tosca.capabilities.OperatingSystem
+      feature_server_cmaui_1:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_server_ps_1_test_nested3Level_test_nested2Level:
+      disk.allocation_server_cmaui_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_cmaui_1:
-        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_oam_1_test_nested2Level:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_server_cmaui_2:
-        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_cmaui_2:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      vcpus_server_oam_1_test_nested2Level:
+      instance_server_ps_1_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_oam01_port_1_test_nested2Level:
+      disk.allocation_server_cmaui_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_server_ps_2_test_nested3Level_test_nested2Level:
+      memory_server_oam_2_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_1:
+      vcpus_server_cmaui_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_pd01_port_1_test_nested3Level_test_nested2Level:
+      disk.root.size_server_oam_2_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_ps_2_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.network.Bindable
+      disk.device.allocation_server_ps_2_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_oam_2_test_nested2Level:
+      memory.usage_server_ps_2_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.iops_server_oam_1_test_nested2Level:
+      network.incoming.bytes_cmaui02_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.usage_server_ps_2_test_nested3Level_test_nested2Level:
+      disk.write.requests_server_cmaui_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_pd01_port_1_test_nested3Level_test_nested2Level:
+      disk.write.requests_server_cmaui_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_server_ps_1_test_nested3Level_test_nested2Level:
+      network.incoming.bytes_oam01_port_1_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_oam_1_test_nested2Level:
+      vcpus_server_oam_2_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_ps_2_test_nested3Level_test_nested2Level:
+      disk.usage_server_cmaui_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_oam01_port_1_test_nested2Level:
-        type: tosca.capabilities.Node
+      os_server_ps_1_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_cmaui01_port_1:
+      disk.usage_server_cmaui_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
-      instance_server_cmaui_2:
+      network.outgoing.packets.rate_pd01_port_1_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_1:
+      network.incoming.bytes.rate_pd01_port_1_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_ps_2_test_nested3Level_test_nested2Level:
+      disk.latency_server_oam_2_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_cmaui01_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_pd02_port_2_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_server_ps_1_test_nested3Level_test_nested2Level:
+      disk.read.bytes.rate_server_ps_1_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_1:
+      memory_server_oam_1_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_ps_1_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
-        occurrences:
-        - 1
-        - UNBOUNDED
-      scalable_server_oam_1_test_nested2Level:
-        type: tosca.capabilities.Scalable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.packets.rate_pd01_port_1_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_ps_2_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.
+      binding_server_oam_2_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_server_ps_1_test_nested3Level_test_nested2Level:
+      disk.ephemeral.size_server_oam_2_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_2:
+      vcpus_server_ps_1_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_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_cmaui_2:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_server_cmaui_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_cmaui_1:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_server_oam_1_test_nested2Level:
+      network.incoming.bytes.rate_pd02_port_2_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_2:
+      disk.write.requests_server_ps_1_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_oam_1_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.
+      feature_server_ps_2_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes.rate_server_oam_1_test_nested2Level:
+      network.outgoing.bytes_oam02_port_2_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_oam_2_test_nested2Level:
+      disk.device.iops_server_oam_1_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_oam_1_test_nested2Level:
+      disk.ephemeral.size_server_oam_1_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_pd02_port_2_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.read.bytes.rate_server_oam_2_test_nested2Level:
+      network.outgoing.packets.rate_pd02_port_2_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_pd01_port_1_test_nested3Level_test_nested2Level:
+      network.incoming.packets_cmaui01_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.rate_server_ps_2_test_nested3Level_test_nested2Level:
+      disk.read.bytes_server_ps_1_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_oam_2_test_nested2Level:
+      network.outgoing.bytes.rate_oam01_port_1_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_1:
+      disk.device.read.requests_server_oam_2_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_2:
+      network.incoming.bytes_oam02_port_2_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_cmaui01_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.
+      host_server_ps_2_test_nested3Level_test_nested2Level:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      binding_cmaui01_port_1:
-        type: tosca.capabilities.network.Bindable
+      host_server_cmaui_2:
+        type: tosca.capabilities.Container
         valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
-      scalable_server_oam_2_test_nested2Level:
-        type: tosca.capabilities.Scalable
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_server_ps_2_test_nested3Level_test_nested2Level:
+      disk.device.usage_server_ps_1_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_pd01_port_1_test_nested3Level_test_nested2Level:
+      disk.iops_server_ps_1_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_ps_2_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.
+      host_server_cmaui_1:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_cmaui01_port_1:
+      disk.read.bytes_server_oam_2_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_ps_2_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.
+      os_server_oam_1_test_nested2Level:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_server_oam_1_test_nested2Level:
+      cpu.delta_server_ps_2_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_ps_2_test_nested3Level_test_nested2Level:
+      disk.device.read.requests_server_ps_1_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_ps_1_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.Scalable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.write.requests.rate_server_cmaui_2:
+      disk.write.requests_server_oam_1_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_1:
+      network.incoming.packets.rate_oam01_port_1_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_oam_1_test_nested2Level:
+      network.outgoing.bytes_oam01_port_1_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_cmaui02_port_2:
+      network.incoming.packets.rate_cmaui02_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_oam_2_test_nested2Level:
-        type: tosca.capabilities.Endpoint.Admin
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes.rate_pd02_port_2_test_nested3Level_test_nested2Level:
+      disk.device.write.requests_server_ps_1_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_ps_2_test_nested3Level_test_nested2Level:
+      disk.device.latency_server_oam_2_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_ps_2_test_nested3Level_test_nested2Level:
+      cpu_server_ps_2_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_cmaui02_port_2:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.write.bytes.rate_server_oam_2_test_nested2Level:
+      disk.device.read.requests.rate_server_cmaui_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_ps_1_test_nested3Level_test_nested2Level:
+      disk.device.read.requests.rate_server_oam_1_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_1:
+      disk.write.requests.rate_server_oam_1_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_2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_oam01_port_1_test_nested2Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      disk.device.capacity_server_cmaui_2:
+      vcpus_server_cmaui_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_server_oam_1_test_nested2Level:
+      feature_test_nested3Level_test_nested2Level:
         type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      scalable_server_ps_2_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.Scalable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.usage_server_ps_1_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_2:
+      disk.device.write.requests.rate_server_ps_1_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_2:
+      disk.device.write.requests.rate_server_oam_1_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_1:
+      disk.read.bytes.rate_server_cmaui_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_server_ps_2_test_nested3Level_test_nested2Level:
+      disk.read.bytes.rate_server_cmaui_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.usage_server_oam_2_test_nested2Level:
+      disk.device.read.requests.rate_server_cmaui_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
-      binding_server_oam_1_test_nested2Level:
-        type: tosca.capabilities.network.Bindable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.requests.rate_server_ps_2_test_nested3Level_test_nested2Level:
+      instance_server_oam_1_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_1:
+      memory.resident_server_cmaui_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_pd02_port_2_test_nested3Level_test_nested2Level:
+      disk.read.requests_server_ps_2_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.requests_server_oam_2_test_nested2Level:
+      network.incoming.bytes.rate_oam01_port_1_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_2:
+      disk.write.bytes.rate_server_oam_1_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_oam_2_test_nested2Level:
+      cpu_util_server_oam_2_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_ps_2_test_nested3Level_test_nested2Level:
+      memory.resident_server_cmaui_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_server_ps_1_test_nested3Level_test_nested2Level:
+      disk.write.bytes_server_oam_1_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_oam_2_test_nested2Level:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
-        occurrences:
-        - 1
-        - UNBOUNDED
-      feature_server_oam_2_test_nested2Level:
+      feature_pd02_port_2_test_nested3Level_test_nested2Level:
         type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_server_ps_1_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.iops_server_cmaui_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_server_ps_1_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.iops_server_cmaui_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.root.size_server_oam_1_test_nested2Level:
+      disk.latency_server_cmaui_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.rate_server_oam_2_test_nested2Level:
+      disk.device.write.bytes_server_ps_1_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_ps_1_test_nested3Level_test_nested2Level:
+      disk.latency_server_cmaui_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_cmaui01_port_1:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.requests.rate_server_ps_1_test_nested3Level_test_nested2Level:
+      memory.usage_server_cmaui_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_oam_1_test_nested2Level:
-        type: tosca.capabilities.Endpoint.Admin
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.bytes.rate_server_oam_1_test_nested2Level:
+      memory.usage_server_cmaui_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_oam02_port_2_test_nested2Level:
+      network.outpoing.packets_cmaui01_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.requests.rate_server_oam_2_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
+  org.openecomp.resource.abstract.nodes.heat.nested2:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    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
+      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
+      oam_names:
+        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_oam01_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
         - UNBOUNDED
-      disk.device.read.bytes_server_oam_1_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.
+    - link_oam01_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_oam02_port_2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_oam02_port_2:
+        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
-      network.outgoing.packets.rate_oam01_port_1_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.
+    - dependency_pd01_port_1_test_nested3Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pd01_port_1_test_nested3Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
+        - 1
+    - dependency_pd02_port_2_test_nested3Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
         - UNBOUNDED
-      disk.device.read.bytes.rate_server_ps_2_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.
+    - link_pd02_port_2_test_nested3Level:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
+        - 1
+    - dependency_server_ps_2_test_nested3Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
         - UNBOUNDED
-      disk.device.write.bytes.rate_server_ps_1_test_nested3Level_test_nested2Level:
+    - local_storage_server_ps_2_test_nested3Level:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_server_ps_1_test_nested3Level:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_ps_1_test_nested3Level:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_server_oam_2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_oam_2:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_server_oam_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_oam_1:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      network.incoming.packets.rate_oam02_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_ps_2_test_nested3Level_test_nested2Level:
+      disk.latency_server_oam_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.bytes_server_cmaui_1:
+      disk.device.write.requests.rate_server_ps_1_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_2:
+      memory.resident_server_ps_2_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_1:
-        type: tosca.capabilities.Node
+      disk.latency_server_oam_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_server_cmaui_1:
+      network.incoming.bytes_oam02_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_server_oam_1_test_nested2Level:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      endpoint_server_oam_1:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      feature_server_cmaui_2:
-        type: tosca.capabilities.Node
+      endpoint_server_oam_2:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      instance_server_ps_1_test_nested3Level_test_nested2Level:
+      binding_pd01_port_1_test_nested3Level:
+        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_server_ps_2_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_2:
+      memory.resident_server_ps_1_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_oam_2_test_nested2Level:
+      cpu.delta_server_oam_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
-      vcpus_server_cmaui_2:
+      disk.device.read.bytes_server_oam_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_server_oam_2_test_nested2Level:
+      disk.device.read.bytes_server_oam_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_ps_2_test_nested3Level_test_nested2Level:
+      cpu.delta_server_oam_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_ps_2_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.
+      attachment_oam01_port_1:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_cmaui02_port_2:
+      disk.write.bytes_server_ps_1_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_2:
+      disk.write.requests_server_ps_2_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_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_server_oam_2:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes_oam01_port_1_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.
+      scalable_server_oam_1:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      vcpus_server_oam_2_test_nested2Level:
+      disk.device.write.bytes_server_ps_1_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_1:
+      disk.write.requests_server_ps_1_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
-      os_server_ps_1_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.OperatingSystem
+      network.outgoing.bytes_pd02_port_2_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_2:
+      disk.write.bytes_server_ps_2_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_pd01_port_1_test_nested3Level_test_nested2Level:
+      disk.read.bytes.rate_server_oam_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_pd01_port_1_test_nested3Level_test_nested2Level:
+      disk.read.bytes.rate_server_oam_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_2_test_nested2Level:
+      disk.capacity_server_ps_1_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_pd02_port_2_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.Attachment
+      disk.device.write.requests_server_oam_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_server_ps_1_test_nested3Level_test_nested2Level:
+      disk.device.write.requests_server_oam_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_server_oam_1_test_nested2Level:
+      network.incoming.packets.rate_pd02_port_2_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_oam_2_test_nested2Level:
-        type: tosca.capabilities.network.Bindable
+      disk.device.write.bytes_server_ps_2_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_oam_2_test_nested2Level:
+      disk.device.write.bytes_server_oam_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
-      vcpus_server_ps_1_test_nested3Level_test_nested2Level:
+      disk.usage_server_oam_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_server_cmaui_2:
-        type: tosca.capabilities.OperatingSystem
+      disk.capacity_server_oam_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
-      os_server_cmaui_1:
-        type: tosca.capabilities.OperatingSystem
+      disk.usage_server_oam_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_pd02_port_2_test_nested3Level_test_nested2Level:
+      disk.device.write.bytes_server_oam_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_server_ps_1_test_nested3Level_test_nested2Level:
+      disk.capacity_server_oam_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_server_ps_2_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.Node
+      network.incoming.packets_oam01_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.bytes_oam02_port_2_test_nested2Level:
+      disk.device.read.requests.rate_server_ps_1_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_oam_1_test_nested2Level:
+      disk.latency_server_ps_1_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_oam_1_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.
+      endpoint_server_ps_1_test_nested3Level:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_pd02_port_2_test_nested3Level_test_nested2Level:
+      disk.capacity_server_ps_2_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_cmaui01_port_1:
+      network.outgoing.bytes.rate_oam01_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_server_ps_1_test_nested3Level_test_nested2Level:
+      disk.iops_server_ps_2_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_oam01_port_1_test_nested2Level:
+      disk.device.capacity_server_ps_2_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_oam_2_test_nested2Level:
+      disk.device.usage_server_ps_1_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_oam02_port_2_test_nested2Level:
+      cpu.delta_server_ps_2_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_ps_2_test_nested3Level_test_nested2Level:
+      host_server_ps_2_test_nested3Level:
         type: tosca.capabilities.Container
         valid_source_types:
         - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      host_server_cmaui_2:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      disk.device.read.bytes_server_ps_2_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.usage_server_ps_1_test_nested3Level_test_nested2Level:
+      feature_server_ps_1_test_nested3Level:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_server_ps_1_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.iops_server_ps_1_test_nested3Level_test_nested2Level:
+      network.outpoing.packets_pd01_port_1_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_1:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      disk.device.allocation_server_ps_1_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_oam_2_test_nested2Level:
+      network.outgoing.bytes.rate_pd02_port_2_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
-      os_server_oam_1_test_nested2Level:
-        type: tosca.capabilities.OperatingSystem
+      disk.allocation_server_oam_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.delta_server_ps_2_test_nested3Level_test_nested2Level:
+      memory.resident_server_oam_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_ps_1_test_nested3Level_test_nested2Level:
+      memory.resident_server_oam_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests_server_oam_1_test_nested2Level:
+      network.outgoing.packets.rate_pd01_port_1_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_oam01_port_1_test_nested2Level:
+      memory.usage_server_ps_2_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_oam01_port_1_test_nested2Level:
+      disk.read.bytes.rate_server_ps_1_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_cmaui02_port_2:
+      disk.device.read.requests.rate_server_oam_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_server_ps_1_test_nested3Level_test_nested2Level:
+      disk.allocation_server_oam_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_server_oam_2_test_nested2Level:
+      memory_server_ps_2_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_ps_2_test_nested3Level_test_nested2Level:
+      disk.device.read.requests.rate_server_oam_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_cmaui_1:
+      vcpus_server_ps_1_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_oam_1_test_nested2Level:
+      disk.write.requests.rate_server_oam_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.rate_server_oam_1_test_nested2Level:
+      disk.write.requests.rate_server_oam_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_oam01_port_1_test_nested2Level:
+      network.incoming.bytes_pd01_port_1_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_ps_1_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_pd02_port_2_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_pd01_port_1_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_oam_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.bytes_server_oam_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_server_ps_2_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_oam02_port_2:
         type: tosca.capabilities.network.Bindable
         valid_source_types:
         - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
         - 0
         - UNBOUNDED
-      vcpus_server_cmaui_1:
+      binding_server_oam_1:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_oam_2:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_ps_2_test_nested3Level:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_oam02_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_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.Node
+      network.outpoing.packets_oam01_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_ps_1_test_nested3Level_test_nested2Level:
+      disk.device.read.bytes.rate_server_oam_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_oam_1_test_nested2Level:
+      disk.device.read.bytes.rate_server_oam_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.rate_server_cmaui_1:
+      os_server_ps_1_test_nested3Level:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_server_ps_1_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.rate_server_cmaui_2:
+      network.incoming.bytes.rate_pd01_port_1_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_2:
+      instance_server_oam_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_oam_1_test_nested2Level:
+      disk.usage_server_ps_1_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_2:
+      instance_server_oam_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_server_ps_2_test_nested3Level_test_nested2Level:
+      network.incoming.packets_oam02_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_oam01_port_1_test_nested2Level:
+      disk.read.bytes_server_ps_2_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_oam_1_test_nested2Level:
+      disk.root.size_server_oam_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_server_oam_2_test_nested2Level:
+      disk.root.size_server_oam_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.resident_server_cmaui_1:
+      cpu.delta_server_ps_1_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_oam_1_test_nested2Level:
+      disk.iops_server_oam_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_pd02_port_2_test_nested3Level_test_nested2Level:
-        type: tosca.capabilities.Node
+      disk.iops_server_oam_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_cmaui_2:
+      disk.write.bytes.rate_server_ps_1_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_ps_1_test_nested3Level_test_nested2Level:
+      host_server_ps_1_test_nested3Level:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_oam02_port_2:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_server_oam_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_cmaui_1:
+      disk.device.iops_server_oam_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_cmaui_1:
+      scalable_server_ps_2_test_nested3Level:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_ps_2_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_2:
+      host_server_oam_2:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_oam_1:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_server_ps_1_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_cmaui01_port_1:
+      network.incoming.bytes.rate_oam02_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
-  org.openecomp.resource.abstract.nodes.heat.nested2:
-    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
-    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
-      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
-      oam_names:
-        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_oam01_port_1:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - link_oam01_port_1:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      disk.write.requests.rate_server_ps_2_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
-        - 1
-    - dependency_oam02_port_2:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
         - UNBOUNDED
-    - link_oam02_port_2:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      disk.latency_server_ps_2_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
-        - 1
-    - dependency_test_nested3Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - dependency_pd01_port_1_test_nested3Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
         - UNBOUNDED
-    - link_pd01_port_1_test_nested3Level:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      network.incoming.packets.rate_oam01_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
-        - 1
-    - dependency_pd02_port_2_test_nested3Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
         - UNBOUNDED
-    - link_pd02_port_2_test_nested3Level:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      disk.device.latency_server_ps_1_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
-        - 1
-    - dependency_server_ps_2_test_nested3Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - local_storage_server_ps_2_test_nested3Level:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - dependency_server_ps_1_test_nested3Level:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
         - UNBOUNDED
-    - local_storage_server_ps_1_test_nested3Level:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+      disk.ephemeral.size_server_oam_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:
-        - 0
+        - 1
         - UNBOUNDED
-    - dependency_server_oam_2:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+      feature_server_oam_2:
+        type: tosca.capabilities.Node
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-    - local_storage_server_oam_2:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+      disk.ephemeral.size_server_oam_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
-    - dependency_server_oam_1:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+      feature_server_oam_1:
+        type: tosca.capabilities.Node
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-    - local_storage_server_oam_1:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+      attachment_pd02_port_2_test_nested3Level:
+        type: tosca.capabilities.Attachment
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-    capabilities:
-      network.incoming.packets.rate_oam02_port_2:
+      network.incoming.bytes_oam01_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_2:
+      cpu_server_ps_2_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_ps_1_test_nested3Level:
+      network.incoming.packets.rate_pd01_port_1_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_ps_2_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.
+      os_server_oam_1:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      disk.latency_server_oam_1:
+      os_server_oam_2:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_oam02_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_oam02_port_2:
+      disk.device.latency_server_ps_2_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_oam_1:
-        type: tosca.capabilities.Endpoint.Admin
+      feature_oam01_port_1:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      endpoint_server_oam_2:
-        type: tosca.capabilities.Endpoint.Admin
+      disk.device.allocation_server_oam_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
-      binding_pd01_port_1_test_nested3Level:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.device.allocation_server_oam_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
-      disk.device.write.requests.rate_server_ps_2_test_nested3Level:
+      network.incoming.bytes_pd02_port_2_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_ps_1_test_nested3Level:
+      cpu_util_server_ps_2_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_oam_2:
+      network.incoming.bytes.rate_oam01_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_oam_1:
+      vcpus_server_oam_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.bytes_server_oam_2:
+      disk.write.requests_server_oam_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_server_oam_1:
+      cpu_util_server_ps_1_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_oam01_port_1:
-        type: tosca.capabilities.Attachment
+      disk.write.requests_server_oam_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.bytes_server_ps_1_test_nested3Level:
+      disk.ephemeral.size_server_ps_2_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_ps_2_test_nested3Level:
+      disk.read.bytes_server_ps_1_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_oam_2:
-        type: tosca.capabilities.Scalable
+      disk.device.read.bytes.rate_server_ps_2_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_oam_1:
-        type: tosca.capabilities.Scalable
+      os_server_ps_2_test_nested3Level:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.bytes_server_ps_1_test_nested3Level:
+      network.incoming.bytes.rate_pd02_port_2_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_ps_1_test_nested3Level:
+      network.outgoing.bytes.rate_oam02_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_pd02_port_2_test_nested3Level:
+      vcpus_server_oam_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_ps_2_test_nested3Level:
+      network.incoming.packets_pd02_port_2_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.rate_server_oam_2:
+      disk.usage_server_ps_2_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.rate_server_oam_1:
+      disk.device.write.requests.rate_server_oam_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_server_ps_1_test_nested3Level:
+      disk.device.write.requests.rate_server_oam_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_server_oam_1:
+      cpu_server_oam_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_server_oam_2:
+      cpu_server_oam_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_pd02_port_2_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_ps_2_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_oam_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.usage_server_oam_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_oam01_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      disk.capacity_server_oam_2:
+      disk.device.write.requests_server_ps_2_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_oam_2:
+      memory.usage_server_ps_1_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_oam_1:
+      disk.device.write.bytes.rate_server_ps_1_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_oam_1:
+      cpu_server_ps_1_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_oam01_port_1:
+      disk.write.bytes.rate_server_ps_2_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_ps_1_test_nested3Level:
+      instance_server_ps_1_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_ps_1_test_nested3Level:
+      disk.device.read.requests_server_ps_2_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_ps_1_test_nested3Level:
-        type: tosca.capabilities.Endpoint.Admin
+      feature_server_ps_2_test_nested3Level:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.capacity_server_ps_2_test_nested3Level:
+      disk.device.read.requests_server_oam_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_oam01_port_1:
+      disk.read.requests_server_ps_2_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.iops_server_ps_2_test_nested3Level:
+      disk.root.size_server_ps_1_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_ps_2_test_nested3Level:
+      disk.read.requests_server_oam_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_server_ps_1_test_nested3Level:
+      disk.device.read.requests_server_oam_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.delta_server_ps_2_test_nested3Level:
+      disk.read.requests_server_oam_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_server_ps_2_test_nested3Level:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.read.bytes_server_ps_2_test_nested3Level:
+      memory.usage_server_oam_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_server_ps_1_test_nested3Level:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.write.requests.rate_server_ps_1_test_nested3Level:
+      disk.device.iops_server_ps_1_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_pd01_port_1_test_nested3Level:
+      memory.usage_server_oam_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_ps_1_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.
+      scalable_server_ps_1_test_nested3Level:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_pd02_port_2_test_nested3Level:
+      network.outgoing.packets.rate_pd02_port_2_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_oam_2:
+      disk.read.bytes_server_oam_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.resident_server_oam_2:
+      disk.read.bytes_server_oam_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_oam_1:
+      network.outgoing.bytes_pd01_port_1_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_pd01_port_1_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.
+      binding_server_ps_2_test_nested3Level:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_server_ps_2_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.
+      feature_pd02_port_2_test_nested3Level:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes.rate_server_ps_1_test_nested3Level:
+      disk.device.write.bytes.rate_server_oam_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_server_oam_1:
+      disk.device.iops_server_ps_2_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_oam_1:
+      disk.write.bytes.rate_server_oam_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_ps_2_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.
+      binding_server_ps_1_test_nested3Level:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_server_oam_2:
+      disk.write.bytes.rate_server_oam_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
-      vcpus_server_ps_1_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.
+      attachment_pd01_port_1_test_nested3Level:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_server_oam_2:
+      disk.device.write.bytes.rate_server_oam_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.rate_server_oam_1:
+      memory_server_oam_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_pd01_port_1_test_nested3Level:
+      memory_server_oam_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_server_ps_1_test_nested3Level:
+      disk.device.latency_server_oam_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_pd02_port_2_test_nested3Level:
+      disk.device.latency_server_oam_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_pd01_port_1_test_nested3Level:
+      disk.device.usage_server_oam_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.bytes_server_oam_2:
+      disk.device.usage_server_oam_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_oam_1:
+      disk.read.requests_server_ps_1_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_ps_2_test_nested3Level:
+      disk.device.read.bytes.rate_server_ps_1_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_oam02_port_2:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
-      binding_server_oam_1:
-        type: tosca.capabilities.network.Bindable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      binding_server_oam_2:
-        type: tosca.capabilities.network.Bindable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      endpoint_server_ps_2_test_nested3Level:
-        type: tosca.capabilities.Endpoint.Admin
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.outgoing.bytes_oam02_port_2:
+      disk.device.read.requests.rate_server_ps_2_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_oam01_port_1:
+      disk.device.usage_server_ps_2_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_oam_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_test_nested3Level:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.bytes.rate_server_oam_2:
+      instance_server_ps_2_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
-      os_server_ps_1_test_nested3Level:
-        type: tosca.capabilities.OperatingSystem
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.ephemeral.size_server_ps_1_test_nested3Level:
+      disk.allocation_server_ps_1_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_pd01_port_1_test_nested3Level:
+      disk.device.write.bytes.rate_server_ps_2_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_oam_1:
+      disk.device.capacity_server_oam_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.usage_server_ps_1_test_nested3Level:
+      network.outgoing.packets.rate_oam01_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_oam_2:
+      disk.device.read.requests_server_ps_1_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_oam02_port_2:
+      disk.read.bytes.rate_server_ps_2_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_ps_2_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.
+      feature_oam02_port_2:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.root.size_server_oam_1:
+      network.outgoing.bytes_oam01_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.root.size_server_oam_2:
+      network.outpoing.packets_oam02_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.delta_server_ps_1_test_nested3Level:
+      network.incoming.packets_pd01_port_1_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.iops_server_oam_2:
+      cpu_util_server_oam_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_oam_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_pd02_port_2_test_nested3Level:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      disk.write.bytes.rate_server_ps_1_test_nested3Level:
+      disk.device.allocation_server_ps_2_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_ps_1_test_nested3Level:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
-        occurrences:
-        - 1
-        - UNBOUNDED
-      attachment_oam02_port_2:
-        type: tosca.capabilities.Attachment
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.iops_server_oam_2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_pd01_port_1_test_nested3Level:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_server_oam_1:
+      disk.iops_server_ps_1_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_ps_2_test_nested3Level:
-        type: tosca.capabilities.Scalable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.root.size_server_ps_2_test_nested3Level:
+      vcpus_server_ps_2_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_oam_2:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
-        occurrences:
-        - 1
-        - UNBOUNDED
-      host_server_oam_1:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.capacity_server_ps_1_test_nested3Level:
+      disk.device.capacity_server_oam_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_oam02_port_2:
+      cpu_util_server_oam_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_server_ps_2_test_nested3Level:
+      disk.device.read.bytes_server_ps_1_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_ps_2_test_nested3Level:
+      disk.device.write.requests_server_ps_1_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_oam01_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.
+  org.openecomp.resource.abstract.nodes.ps:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_pd02_port_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
+      port_pd02_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        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_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_pd02_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_ps_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd02_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd02_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_ps_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd02_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd02_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd02_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    requirements:
+    - dependency_ps:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      disk.device.latency_server_ps_1_test_nested3Level:
+    - local_storage_ps:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_ps_pd02_port:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_ps_pd02_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      disk.write.requests.rate_ps:
         type: org.openecomp.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_2:
+      disk.device.iops_ps:
         type: org.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_2:
-        type: tosca.capabilities.Node
+      scalable_ps:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_server_oam_1:
+      disk.write.requests_ps:
         type: org.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_1:
-        type: tosca.capabilities.Node
+      host_ps:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      attachment_pd02_port_2_test_nested3Level:
-        type: tosca.capabilities.Attachment
+      disk.device.allocation_ps:
+        type: org.openecomp.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_oam01_port_1:
+      disk.read.bytes_ps:
         type: org.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_ps_2_test_nested3Level:
+      memory.resident_ps:
         type: org.openecomp.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_pd01_port_1_test_nested3Level:
+      disk.device.usage_ps:
         type: org.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_oam_1:
-        type: tosca.capabilities.OperatingSystem
+      network.outgoing.bytes.rate_ps_pd02_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_oam_2:
-        type: tosca.capabilities.OperatingSystem
+      endpoint_ps:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.packets.rate_oam02_port_2:
+      disk.device.capacity_ps:
         type: org.openecomp.capabilities.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_ps_2_test_nested3Level:
+      cpu_ps:
         type: org.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_oam01_port_1:
-        type: tosca.capabilities.Node
-        occurrences:
-        - 1
-        - UNBOUNDED
-      disk.device.allocation_server_oam_2:
+      network.incoming.packets_ps_pd02_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_server_oam_1:
+      disk.device.write.bytes_ps:
         type: org.openecomp.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_pd02_port_2_test_nested3Level:
+      network.outgoing.packets.rate_ps_pd02_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_ps_2_test_nested3Level:
+      cpu.delta_ps:
         type: org.openecomp.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_oam01_port_1:
+      disk.root.size_ps:
         type: org.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_2:
+      disk.device.read.requests.rate_ps:
         type: org.openecomp.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_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_ps:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_server_ps_1_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.
+      binding_ps_pd02_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      disk.write.requests_server_oam_2:
+      disk.device.write.requests.rate_ps:
         type: org.openecomp.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_ps_2_test_nested3Level:
+      network.outgoing.bytes_ps_pd02_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_server_ps_1_test_nested3Level:
+      cpu_util_ps:
         type: org.openecomp.capabilities.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_ps_2_test_nested3Level:
+      network.outpoing.packets_ps_pd02_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_ps_2_test_nested3Level:
-        type: tosca.capabilities.OperatingSystem
+      network.incoming.packets.rate_ps_pd02_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_pd02_port_2_test_nested3Level:
+      network.incoming.bytes_ps_pd02_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_oam02_port_2:
+      disk.read.bytes.rate_ps:
         type: org.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_1:
+      disk.device.read.bytes.rate_ps:
         type: org.openecomp.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_pd02_port_2_test_nested3Level:
+      disk.read.requests_ps:
         type: org.openecomp.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_ps_2_test_nested3Level:
+      vcpus_ps:
         type: org.openecomp.capabilities.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_2:
+      instance_ps:
         type: org.openecomp.capabilities.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_1:
+      disk.latency_ps:
         type: org.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_oam_1:
+      disk.device.read.bytes_ps:
         type: org.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_oam_2:
+      memory.usage_ps:
         type: org.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_oam01_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.requests_server_ps_2_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.
+      feature_ps:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_server_ps_1_test_nested3Level:
+      disk.device.write.bytes.rate_ps:
         type: org.openecomp.capabilities.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_ps_1_test_nested3Level:
+      disk.ephemeral.size_ps:
         type: org.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_ps_1_test_nested3Level:
+      memory_ps:
         type: org.openecomp.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_ps_2_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.
+      feature_ps_pd02_port:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      instance_server_ps_1_test_nested3Level:
+      disk.usage_ps:
         type: org.openecomp.capabilities.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_ps_2_test_nested3Level:
+      disk.write.bytes.rate_ps:
         type: org.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_ps_2_test_nested3Level:
-        type: tosca.capabilities.Node
+      os_ps:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_server_oam_1:
+      disk.iops_ps:
         type: org.openecomp.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_ps_2_test_nested3Level:
+      disk.allocation_ps:
         type: org.openecomp.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_ps_1_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.
+      attachment_ps_pd02_port:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.requests_server_oam_2:
+      disk.device.read.requests_ps:
         type: org.openecomp.capabilities.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_2:
+      disk.capacity_ps:
         type: org.openecomp.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_oam_1:
+      disk.device.latency_ps:
         type: org.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_1:
+      network.incoming.bytes.rate_ps_pd02_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_server_ps_1_test_nested3Level:
+      disk.device.write.requests_ps:
         type: org.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_2:
+      disk.write.bytes_ps:
         type: org.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_ps_1_test_nested3Level:
-        type: tosca.capabilities.Scalable
+  org.openecomp.resource.abstract.nodes.heat.nested3:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    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
+      ps_names:
+        type: list
+        description: CMAUI1, CMAUI2 server names
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      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_pd01_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pd01_port_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
+        - 1
+    - dependency_pd02_port_2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
         - UNBOUNDED
-      network.outgoing.packets.rate_pd02_port_2_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.
+    - link_pd02_port_2:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
+        - 1
+    - dependency_server_ps_2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
         - UNBOUNDED
-      disk.read.bytes_server_oam_2:
-        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_ps_2:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_server_ps_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_server_ps_1:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    capabilities:
+      binding_server_ps_2:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.read.bytes_server_oam_1:
+      instance_server_ps_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_pd01_port_1_test_nested3Level:
+      instance_server_ps_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_server_ps_2_test_nested3Level:
+      binding_server_ps_1:
         type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      feature_pd02_port_2_test_nested3Level:
-        type: tosca.capabilities.Node
+      disk.device.usage_server_ps_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_oam_1:
+      disk.device.usage_server_ps_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_ps_2_test_nested3Level:
+      disk.capacity_server_ps_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_server_oam_1:
+      network.outgoing.bytes_pd02_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
-      binding_server_ps_1_test_nested3Level:
-        type: tosca.capabilities.network.Bindable
+      disk.capacity_server_ps_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.bytes.rate_server_oam_2:
+      network.outgoing.bytes_pd01_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_pd01_port_1_test_nested3Level:
-        type: tosca.capabilities.Attachment
+      memory.usage_server_ps_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_oam_2:
+      memory.usage_server_ps_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_server_oam_1:
+      disk.write.requests.rate_server_ps_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_server_oam_2:
+      disk.device.latency_server_ps_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_server_oam_2:
+      disk.write.requests.rate_server_ps_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_server_oam_1:
+      disk.device.latency_server_ps_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_server_oam_2:
+      disk.device.write.requests_server_ps_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_server_oam_1:
+      disk.device.write.requests_server_ps_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_ps_1_test_nested3Level:
+      cpu_server_ps_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.bytes.rate_server_ps_1_test_nested3Level:
+      cpu_server_ps_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_server_ps_2_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.
+      os_server_ps_2:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.usage_server_ps_2_test_nested3Level:
+      os_server_ps_1:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_server_ps_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_test_nested3Level:
-        type: tosca.capabilities.Node
+      endpoint_server_ps_2:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      instance_server_ps_2_test_nested3Level:
+      disk.device.allocation_server_ps_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.allocation_server_ps_1_test_nested3Level:
+      disk.read.bytes_server_ps_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_ps_2_test_nested3Level:
+      disk.read.bytes_server_ps_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.capacity_server_oam_2:
+      disk.device.write.bytes_server_ps_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_oam01_port_1:
+      disk.device.write.bytes_server_ps_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_server_ps_1_test_nested3Level:
+      endpoint_server_ps_1:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pd01_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.device.read.requests.rate_server_ps_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_server_ps_2_test_nested3Level:
+      network.outgoing.bytes.rate_pd02_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_oam02_port_2:
-        type: tosca.capabilities.Node
+      host_server_ps_2:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_oam01_port_1:
+      disk.device.capacity_server_ps_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_oam02_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_server_ps_1:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.packets_pd01_port_1_test_nested3Level:
+      disk.device.capacity_server_ps_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_util_server_oam_2:
+      disk.device.read.requests.rate_server_ps_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
-      binding_pd02_port_2_test_nested3Level:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      scalable_server_ps_1:
+        type: tosca.capabilities.Scalable
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-      disk.device.allocation_server_ps_2_test_nested3Level:
+      network.incoming.packets.rate_pd02_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_pd01_port_1_test_nested3Level:
-        type: tosca.capabilities.Node
+      scalable_server_ps_2:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.iops_server_ps_1_test_nested3Level:
+      network.outgoing.packets.rate_pd01_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_ps_2_test_nested3Level:
+      disk.write.bytes.rate_server_ps_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.capacity_server_oam_1:
+      disk.write.bytes.rate_server_ps_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_server_oam_1:
+      disk.device.write.requests.rate_server_ps_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.bytes_server_ps_1_test_nested3Level:
+      disk.device.write.requests.rate_server_ps_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_server_ps_1_test_nested3Level:
+      memory.resident_server_ps_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
-  org.openecomp.resource.abstract.nodes.ps:
-    derived_from: org.openecomp.resource.abstract.nodes.VFC
-    properties:
-      port_pd02_port_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
-      port_pd02_port_mac_requirements:
-        type: org.openecomp.datatypes.network.MacRequirements
-        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_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_pd02_port_security_groups:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: json
-      compute_ps_availability_zone:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-      port_pd02_port_replacement_policy:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-      port_pd02_port_network_role:
-        type: string
-        required: true
-        status: SUPPORTED
-      compute_ps_name:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-      port_pd02_port_exCP_naming:
-        type: org.openecomp.datatypes.Naming
-        required: true
-        status: SUPPORTED
-      port_pd02_port_ip_requirements:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: org.openecomp.datatypes.network.IpRequirements
-      port_pd02_port_network:
-        type: list
-        required: true
-        status: SUPPORTED
-        entry_schema:
-          type: string
-    requirements:
-    - dependency_ps:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - local_storage_ps:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
+      disk.ephemeral.size_server_ps_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
-    - dependency_ps_pd02_port:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
+      feature_pd02_port_2:
+        type: tosca.capabilities.Node
         occurrences:
-        - 0
+        - 1
         - UNBOUNDED
-    - link_ps_pd02_port:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
+      disk.ephemeral.size_server_ps_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
-        - 1
-    capabilities:
-      disk.write.requests.rate_ps:
+        - UNBOUNDED
+      disk.write.bytes_server_ps_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_ps:
+      disk.write.bytes_server_ps_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
-      scalable_ps:
-        type: tosca.capabilities.Scalable
+      disk.allocation_server_ps_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_ps:
+      disk.allocation_server_ps_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_ps:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      attachment_pd01_port_1:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.allocation_ps:
+      memory.resident_server_ps_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_ps:
+      disk.latency_server_ps_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.resident_ps:
+      disk.read.requests_server_ps_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_ps:
+      disk.read.requests_server_ps_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes.rate_ps_pd02_port:
+      disk.device.read.requests_server_ps_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_ps:
-        type: tosca.capabilities.Endpoint.Admin
+      disk.device.read.requests_server_ps_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.capacity_ps:
+      network.incoming.bytes.rate_pd01_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_ps:
+      disk.read.bytes.rate_server_ps_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_ps_pd02_port:
+      disk.read.bytes.rate_server_ps_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_ps:
+      disk.device.iops_server_ps_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_ps_pd02_port:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_pd01_port_1:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      cpu.delta_ps:
+      disk.device.iops_server_ps_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.root.size_ps:
+      cpu_util_server_ps_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_ps:
+      disk.iops_server_ps_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_ps:
-        type: tosca.capabilities.network.Bindable
+      cpu_util_server_ps_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_ps_pd02_port:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.iops_server_ps_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:
-        - 0
+        - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_ps:
+      disk.device.read.bytes.rate_server_ps_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_ps_pd02_port:
+      disk.device.read.bytes.rate_server_ps_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_util_ps:
+      disk.latency_server_ps_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_ps_pd02_port:
+      disk.root.size_server_ps_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_ps_pd02_port:
+      attachment_pd02_port_2:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_server_ps_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_ps_pd02_port:
+      network.outgoing.bytes.rate_pd01_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_ps:
+      binding_pd02_port_2:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.incoming.packets.rate_pd01_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_ps:
+      disk.usage_server_ps_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_ps:
+      network.outpoing.packets_pd01_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_ps:
+      disk.usage_server_ps_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
-      instance_ps:
+      network.outpoing.packets_pd02_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_ps:
+      network.incoming.bytes_pd01_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_ps:
+      network.incoming.bytes_pd02_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_ps:
+      network.outgoing.packets.rate_pd02_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_ps:
-        type: tosca.capabilities.Node
+      vcpus_server_ps_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_ps:
+      vcpus_server_ps_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.ephemeral.size_ps:
+      network.incoming.packets_pd01_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_ps:
+      network.incoming.packets_pd02_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_ps_pd02_port:
-        type: tosca.capabilities.Node
+      disk.device.write.bytes.rate_server_ps_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_ps:
+      network.incoming.bytes.rate_pd02_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.bytes.rate_ps:
+      disk.write.requests_server_ps_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_ps:
-        type: tosca.capabilities.OperatingSystem
+      disk.write.requests_server_ps_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_ps:
+      disk.device.write.bytes.rate_server_ps_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.allocation_ps:
+      memory_server_ps_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_ps_pd02_port:
-        type: tosca.capabilities.Attachment
+      disk.device.read.bytes_server_ps_1:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests_ps:
+      disk.device.read.bytes_server_ps_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_ps:
+      memory_server_ps_1:
         type: org.openecomp.capabilities.metric.Ceilometer
         description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.latency_ps:
-        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_ps_2:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      network.incoming.bytes.rate_ps_pd02_port:
+      cpu.delta_server_ps_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_ps:
+      cpu.delta_server_ps_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.bytes_ps:
-        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_ps_1:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-  org.openecomp.resource.abstract.nodes.heat.nested3:
-    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+  org.openecomp.resource.abstract.nodes.oam:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
-      p1:
-        type: string
-        description: UID of OAM network
+      port_oam02_port_network:
+        type: list
         required: true
         status: SUPPORTED
-      p2:
+        entry_schema:
+          type: string
+      port_oam02_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_oam02_port_network_role:
         type: string
-        description: UID of OAM network
         required: true
         status: SUPPORTED
-      ps_names:
+      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_oam02_port_fixed_ips:
         type: list
-        description: CMAUI1, CMAUI2 server names
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
-      cmaui_image:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      vm_flavor_name:
         type: string
-        description: Image for CMAUI server
         required: true
         status: SUPPORTED
-      cmaui_flavor:
-        type: string
-        description: Flavor for CMAUI server
+      port_oam02_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
         required: true
         status: SUPPORTED
-      security_group_name:
+      port_oam02_port_security_groups:
         type: list
-        description: CMAUI1, CMAUI2 server names
         required: true
         status: SUPPORTED
         entry_schema:
-          type: string
-      availability_zone_0:
+          type: json
+      port_oam02_port_subnetpoolid:
         type: string
-        description: availabilityzone name
         required: true
         status: SUPPORTED
-      cmaui_oam_ips:
+      port_oam02_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_oam02_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      vm_image_name:
         type: string
         required: true
         status: SUPPORTED
-      net:
+      port_oam02_port_network_role_tag:
         type: string
         required: true
         status: SUPPORTED
+      port_oam02_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_oam_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam02_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_oam_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
     requirements:
-    - dependency_pd01_port_1:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - link_pd01_port_1:
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
-        occurrences:
-        - 1
-        - 1
-    - dependency_pd02_port_2:
+    - dependency_oam_oam02_port:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - link_pd02_port_2:
+    - link_oam_oam02_port:
         capability: tosca.capabilities.network.Linkable
         relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
         - 1
-    - dependency_server_ps_2:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - local_storage_server_ps_2:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
-        occurrences:
-        - 0
-        - UNBOUNDED
-    - dependency_server_ps_1:
+    - dependency_oam:
         capability: tosca.capabilities.Node
         node: tosca.nodes.Root
         relationship: tosca.relationships.DependsOn
         occurrences:
         - 0
         - UNBOUNDED
-    - local_storage_server_ps_1:
+    - local_storage_oam:
         capability: tosca.capabilities.Attachment
         node: tosca.nodes.BlockStorage
         relationship: tosca.relationships.AttachesTo
@@ -6983,617 +6942,1010 @@ node_types:
         - 0
         - UNBOUNDED
     capabilities:
-      binding_server_ps_2:
-        type: tosca.capabilities.network.Bindable
+      cpu_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_ps_2:
+      network.incoming.bytes.rate_oam_oam02_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_server_ps_1:
+      disk.usage_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
-      binding_server_ps_1:
-        type: tosca.capabilities.network.Bindable
+      memory.resident_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_ps_1:
+      disk.device.write.bytes_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_ps_2:
+      network.incoming.packets_oam_oam02_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_server_ps_1:
+      disk.read.bytes_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.bytes_pd02_port_2:
+      network.outgoing.packets.rate_oam_oam02_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_server_ps_2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_oam_oam02_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      scalable_oam:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      network.outgoing.bytes_pd01_port_1:
+      network.outgoing.bytes.rate_oam_oam02_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_server_ps_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      feature_oam:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_server_ps_2:
+      disk.allocation_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_ps_2:
+      disk.device.usage_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_ps_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      binding_oam:
+        type: tosca.capabilities.network.Bindable
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.requests.rate_server_ps_1:
+      disk.device.read.bytes.rate_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_ps_2:
+      disk.write.bytes.rate_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_ps_2:
+      disk.device.write.bytes.rate_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_ps_1:
+      disk.device.allocation_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_server_ps_2:
+      disk.ephemeral.size_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_server_ps_1:
+      disk.write.requests_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
-      os_server_ps_2:
-        type: tosca.capabilities.OperatingSystem
+      disk.capacity_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
-      os_server_ps_1:
-        type: tosca.capabilities.OperatingSystem
+      instance_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_ps_2:
+      network.outgoing.bytes_oam_oam02_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_ps_2:
-        type: tosca.capabilities.Endpoint.Admin
+      disk.root.size_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_ps_1:
+      network.incoming.packets.rate_oam_oam02_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_server_ps_1:
+      memory_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_server_ps_2:
+      cpu.delta_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_ps_2:
+      disk.device.write.requests_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_ps_1:
+      disk.device.read.requests.rate_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
-      endpoint_server_ps_1:
-        type: tosca.capabilities.Endpoint.Admin
+      disk.write.requests.rate_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
-      binding_pd01_port_1:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
-      disk.device.read.requests.rate_server_ps_1:
+      disk.device.latency_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.bytes.rate_pd02_port_2:
+      disk.device.iops_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
-      host_server_ps_2:
-        type: tosca.capabilities.Container
-        valid_source_types:
-        - tosca.nodes.SoftwareComponent
+      vcpus_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_server_ps_1:
+      disk.device.write.requests.rate_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
-      host_server_ps_1:
+      disk.device.read.bytes_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
+      host_oam:
         type: tosca.capabilities.Container
         valid_source_types:
         - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.capacity_server_ps_2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      endpoint_oam:
+        type: tosca.capabilities.Endpoint.Admin
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.read.requests.rate_server_ps_2:
+      disk.device.read.requests_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_ps_1:
-        type: tosca.capabilities.Scalable
-        occurrences:
-        - 1
-        - UNBOUNDED
-      network.incoming.packets.rate_pd02_port_2:
+      disk.iops_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_ps_2:
-        type: tosca.capabilities.Scalable
+      disk.read.bytes.rate_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_pd01_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.
+      feature_oam_oam02_port:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.write.bytes.rate_server_ps_2:
+      cpu_util_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.rate_server_ps_1:
+      network.outpoing.packets_oam_oam02_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_server_ps_2:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+      os_oam:
+        type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.write.requests.rate_server_ps_1:
+      memory.usage_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_ps_2:
+      disk.latency_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.ephemeral.size_server_ps_1:
+      network.incoming.bytes_oam_oam02_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_pd02_port_2:
-        type: tosca.capabilities.Node
+      attachment_oam_oam02_port:
+        type: tosca.capabilities.Attachment
         occurrences:
         - 1
         - UNBOUNDED
-      disk.ephemeral.size_server_ps_2:
+      disk.write.bytes_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_ps_1:
+      disk.read.requests_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_ps_2:
+      disk.device.capacity_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_ps_2:
-        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.abstract.nodes.cmaui:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    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_cmaui02_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_cmaui02_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_cmaui02_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        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_cmaui02_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_cmaui_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui02_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_cmaui02_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_cmaui02_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui02_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui02_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_cmaui02_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui02_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui02_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_cmaui_cmaui02_port:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      disk.allocation_server_ps_1:
-        type: org.openecomp.capabilities.metric.Ceilometer
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+    - link_cmaui_cmaui02_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
         occurrences:
         - 1
-        - UNBOUNDED
-      attachment_pd01_port_1:
-        type: tosca.capabilities.Attachment
-        occurrences:
         - 1
+    - dependency_cmaui:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
         - UNBOUNDED
-      memory.resident_server_ps_1:
-        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_cmaui:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      disk.latency_server_ps_2:
+    capabilities:
+      network.incoming.bytes_cmaui_cmaui02_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_server_ps_2:
+      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.read.requests_server_ps_1:
+      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.read.requests_server_ps_1:
+      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.read.requests_server_ps_2:
+      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
-      network.incoming.bytes.rate_pd01_port_1:
+      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.read.bytes.rate_server_ps_1:
+      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
-      disk.read.bytes.rate_server_ps_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_cmaui:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_server_ps_1:
+      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
-      feature_pd01_port_1:
+      feature_cmaui_cmaui02_port:
         type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      disk.device.iops_server_ps_2:
+      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
-      cpu_util_server_ps_2:
+      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
-      disk.iops_server_ps_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_cmaui:
+        type: tosca.capabilities.Scalable
         occurrences:
         - 1
         - UNBOUNDED
-      cpu_util_server_ps_1:
+      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
-      disk.iops_server_ps_2:
+      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.device.read.bytes.rate_server_ps_1:
+      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
-      disk.device.read.bytes.rate_server_ps_2:
+      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
-      disk.latency_server_ps_1:
+      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
-      disk.root.size_server_ps_1:
+      network.incoming.packets.rate_cmaui_cmaui02_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_pd02_port_2:
-        type: tosca.capabilities.Attachment
+      binding_cmaui_cmaui02_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
-        - 1
+        - 0
         - UNBOUNDED
-      disk.root.size_server_ps_2:
+      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.outgoing.bytes.rate_pd01_port_1:
+      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
-      binding_pd02_port_2:
-        type: tosca.capabilities.network.Bindable
-        valid_source_types:
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
-        occurrences:
-        - 0
-        - UNBOUNDED
-      network.incoming.packets.rate_pd01_port_1:
+      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.usage_server_ps_1:
+      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
-      network.outpoing.packets_pd01_port_1:
+      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
-      disk.usage_server_ps_2:
+      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.outpoing.packets_pd02_port_2:
+      network.outgoing.packets.rate_cmaui_cmaui02_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_pd01_port_1:
+      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_pd02_port_2:
+      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.outgoing.packets.rate_pd02_port_2:
+      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
-      vcpus_server_ps_1:
+      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
-      vcpus_server_ps_2:
+      feature_cmaui:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_cmaui_cmaui02_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_pd01_port_1:
+      binding_cmaui:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_cmaui_cmaui02_port:
+        type: tosca.capabilities.Attachment
+        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
-      network.incoming.packets_pd02_port_2:
+      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
-      disk.device.write.bytes.rate_server_ps_1:
+      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
-      network.incoming.bytes.rate_pd02_port_2:
+      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.write.requests_server_ps_1:
+      network.outgoing.bytes_cmaui_cmaui02_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_server_ps_2:
+      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
-      disk.device.write.bytes.rate_server_ps_2:
+      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
-      memory_server_ps_2:
+      network.outgoing.bytes.rate_cmaui_cmaui02_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_server_ps_1:
+      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.device.read.bytes_server_ps_2:
+      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
-      memory_server_ps_1:
+      network.incoming.bytes.rate_cmaui_cmaui02_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_server_ps_2:
-        type: tosca.capabilities.Node
+      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.delta_server_ps_1:
+      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
-      cpu.delta_server_ps_2:
+      network.outpoing.packets_cmaui_cmaui02_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_server_ps_1:
-        type: tosca.capabilities.Node
+      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_cmaui01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_cmaui01_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_cmaui01_port_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_cmaui01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_cmaui_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_cmaui01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_cmaui01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_cmaui01_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_cmaui01_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+  org.openecomp.resource.vfc.nodes.heat.ps:
+    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_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
+      compute_ps_availability_zone:
+        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_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_name:
+        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.vfc.nodes.heat.oam:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_oam01_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_oam01_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam01_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_oam01_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_oam01_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_oam01_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
+      port_oam01_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam01_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam01_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_oam01_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_oam_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam01_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_oam_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam01_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
\ No newline at end of file
index eba51d8..576a2f4 100644 (file)
@@ -420,6 +420,85 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  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_5:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -7524,4 +7603,4 @@ node_types:
         type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index 8ba567d..164c5ae 100644 (file)
@@ -5,6 +5,821 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  org.openecomp.resource.vfc.nodes.heat.rd_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
+      compute_rd_server_1b_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      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
+      compute_rd_server_1b_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_b_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+  org.openecomp.resource.vfc.nodes.heat.osm_server_1c2:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_osm_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_osm_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_osm_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
+      port_osm_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_osm_server_1c2_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_osm_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_osm_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_osm_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_osm_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_osm_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_osm_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_osm_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_osm_server_1c2_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_osm_server_1c2_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      osm_server_1c2_accessIPv4:
+        type: string
+        status: SUPPORTED
+  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.BE_1c1:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_BE_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_BE_port_network_role:
+        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
+      port_BE_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_BE_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_BE_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_BE_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_BE_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_BE_1c1_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_BE_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_BE_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_BE_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_BE_1c1_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_BE_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    attributes:
+      BE_1c1_accessIPv4:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server_1b_1:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -1292,6 +2107,101 @@ 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
+      compute_oam_server_1c2_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      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:
@@ -2259,6 +3169,184 @@ 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
+    attributes:
+      pd_server_1b_accessIPv4:
+        type: string
+        status: SUPPORTED
+  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
+    attributes:
+      cmaui_1c1_accessIPv4:
+        type: string
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.BE_1c1:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -7899,4 +8987,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 ef3fc1a..df3f7a3 100644 (file)
@@ -5,6 +5,91 @@ imports:
 - openecomp_heat_index:
     file: openecomp-heat/_index.yml
 node_types:
+  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:
@@ -426,6 +511,91 @@ 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
   org.openecomp.resource.abstract.nodes.pd_server_1b:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -847,6 +1017,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.nested1:
     derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
     properties:
@@ -3841,4 +4181,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 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 8fe327f..6d6a5de 100644 (file)
@@ -426,6 +426,91 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.cmaui:
+    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
+      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
+      compute_cmaui_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_cmaui_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      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
+      port_cmaui_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.heat.nested1:
     derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
     properties:
@@ -1195,4 +1280,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 3113acf..732e000 100644 (file)
@@ -426,6 +426,91 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.cmaui:
+    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
+      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
+      compute_cmaui_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_cmaui_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_cmaui_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      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
+      port_cmaui_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.heat.nested1:
     derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
     properties:
@@ -1145,4 +1230,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 d51e4f4..75d9aef 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:
+      port_pd_server_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd_server_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_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_pd_server_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_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_pd_server_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
   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:
+      port_ps_server_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_ps_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_port_network_role:
+        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
+      port_ps_server_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_ps_server_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_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_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_ps_server_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_ps_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.heat.nested1:
     derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
     properties:
@@ -1587,4 +1757,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 b5dc2d9..34c5eef 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:
+      port_pd_server_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd_server_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_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_pd_server_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_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_pd_server_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -1918,6 +2003,176 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.ps_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_ps_server_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_ps_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_port_network_role:
+        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
+      port_ps_server_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_ps_server_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_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_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_ps_server_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_ps_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+  org.openecomp.resource.vfc.nodes.heat.sm_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_sm_server_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_sm_server_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_sm_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_sm_server_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_sm_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_sm_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_sm_server_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
   org.openecomp.resource.abstract.nodes.oam_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -3181,3 +3436,88 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.oam_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_oam_server_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam_server_port_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_oam_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        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_oam_server_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_oam_server_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_oam_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam_server_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
\ No newline at end of file
index 9c2d3e6..1c8f548 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:
+      port_pd_server_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_pd_server_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
+      port_pd_server_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      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_pd_server_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pd_server_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_pd_server_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pd_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pd_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pd_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
   org.openecomp.resource.abstract.nodes.pd_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -1924,6 +2015,188 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.ps_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_ps_server_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_ps_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_ps_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_ps_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_port_network_role:
+        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
+      port_ps_server_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_ps_server_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_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_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_ps_server_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_ps_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_ps_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_ps_server_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+  org.openecomp.resource.vfc.nodes.heat.sm_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_sm_server_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_sm_server_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_sm_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_sm_server_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_sm_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_sm_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_sm_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_sm_server_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_sm_server_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
   org.openecomp.resource.abstract.nodes.oam_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -3205,3 +3478,94 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.oam_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_oam_server_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam_server_port_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_oam_server_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_oam_server_port_replacement_policy:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        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_oam_server_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_oam_server_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_server_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_oam_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_oam_server_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
\ No newline at end of file
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
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/duplicateReqs/in/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/duplicateReqs/in/MANIFEST.json
new file mode 100644 (file)
index 0000000..b15ef7c
--- /dev/null
@@ -0,0 +1,36 @@
+{
+  "name": "shlomi_5068",
+  "description": "shlomi_5068",
+  "version": "1.0",
+  "data": [
+    {
+      "isBase": true,
+      "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_tdcore.yaml",
+      "type": "HEAT"
+    },
+    {
+      "file": "nested_cscf.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/duplicateReqs/in/base_cscf.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/duplicateReqs/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/duplicateReqs/in/base_cscf.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/duplicateReqs/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/duplicateReqs/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/duplicateReqs/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/duplicateReqs/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/duplicateReqs/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/duplicateReqs/in/nested_cscf.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/duplicateReqs/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/duplicateReqs/in/nested_tdcore.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/duplicateReqs/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/duplicateReqs/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/duplicateReqs/out/MainServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..483ee0c
--- /dev/null
@@ -0,0 +1,3166 @@
+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
+      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_cscf_server_0:
+          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_tdcore_server_0:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+      - dependency_tdcore_server_0:
+          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
+      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_tdcore_server_0:
+          capability: tosca.capabilities.Node
+          node: cscf_internal_network_0
+          relationship: tosca.relationships.DependsOn
+      - dependency_tdcore_server_0:
+          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
+      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
+      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
+      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
+      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
+      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
+    cscf_zone_0_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_0_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_0_names
+        service_template_filter:
+          substitute_service_template: nested_cscfServiceTemplate.yaml
+          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_cscf_server_0:
+          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
+      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
+      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
\ No newline at end of file
index 3702b5a..281f71b 100644 (file)
@@ -2029,6 +2029,510 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.vson_vm:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      vf_module_id:
+        type: string
+        description: Unique ID for this VF Module instance
+        required: true
+        status: SUPPORTED
+      vson_cluster_name:
+        type: string
+        description: Name of the vSON Cluster.
+        required: true
+        status: SUPPORTED
+      default_gateway:
+        type: string
+        description: Default gateway.
+        required: true
+        status: SUPPORTED
+      port_vson_server_oam_net_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      instance_index:
+        type: float
+        description: Index of the instance.
+        required: true
+        status: SUPPORTED
+      vnf_name:
+        type: string
+        description: Unique name for this VF instance.
+        required: true
+        status: SUPPORTED
+      oam_net_subnet_prefix_length:
+        type: string
+        description: Prefix length of the subnet on the OAM network.
+        required: true
+        status: SUPPORTED
+      swift_storage_url:
+        type: string
+        description: |
+          Swift storage URL. Example: http://172.16.209.246:8080/v1/AUTH_a4d426b5ef2e41408a8e6e6b9a8d3029 http://172.16.209.246:8080 - protocol, IP and port, v1 - API version AUTH_a4d426b5ef2e41408a8e6e6b9a8d3029 - account ID
+        required: true
+        status: SUPPORTED
+      vf_module_name:
+        type: string
+        description: Unique name for this VF module instance.
+        required: true
+        status: SUPPORTED
+      dns_servers:
+        type: list
+        description: List of DNS servers.
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      oam_net_security_group_id:
+        type: string
+        description: |
+          The ID of Security group applied on the port bound to the vSON OAM network.
+        required: true
+        status: SUPPORTED
+      vson_vm_image_name:
+        type: string
+        description: VM Image name the vSON instance will be created from.
+        required: true
+        status: SUPPORTED
+      vnf_id:
+        type: string
+        description: Unique ID for this VF instance.
+        required: true
+        status: SUPPORTED
+      port_vson_server_oam_net_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      vson_clm_oam_net_ip:
+        type: string
+        description: IP of the vSON Cluster Manager.
+        required: true
+        status: SUPPORTED
+      port_vson_server_oam_net_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_vson_server_oam_net_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      oam_net_ips:
+        type: list
+        description: Fixed IP assignments for vSON instances on the OAM network.
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      swift_son_container_name:
+        type: string
+        description: Swift container storing vSON artifacts.
+        required: true
+        status: SUPPORTED
+      vfc_role:
+        type: string
+        description: Unique ID for this VF Module instance
+        required: true
+        status: SUPPORTED
+      swift_account_auth_token:
+        type: string
+        description: |
+          Swift account auth token. Example:  041a5187bb4641f9b89583e2539776b0
+        required: true
+        status: SUPPORTED
+      vson_server_group_id:
+        type: string
+        description: |
+          Tells what policy should be applied to the ServerGroup. Affinity policy will force instances to share the same hypervisor. Anti-affinity will force instances to run in different hypervisors.
+        required: true
+        status: SUPPORTED
+      vson_vm_flavor_name:
+        type: string
+        description: The ID or name of the flavor to boot onto.
+        required: true
+        status: SUPPORTED
+      port_vson_server_oam_net_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_vson_server_oam_net_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      availability_zones:
+        type: list
+        description: List of availability zones.
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      ntp_servers:
+        type: list
+        description: List of NTP servers.
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      oam_net_id:
+        type: string
+        description: The ID of the OAM network.
+        required: true
+        status: SUPPORTED
+      port_vson_server_oam_net_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_vson_server_oam_net_port_0_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vson_vm_names:
+        type: list
+        description: A list of unique names to be issued to the vSON Cluster leaders.
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+    requirements:
+    - dependency_vson_server:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_vson_server:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vson_server_oam_net_port_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vson_server_oam_net_port_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      disk.write.bytes_vson_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_vson_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_vson_server_oam_net_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.usage_vson_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_vson_server_oam_net_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.latency_vson_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_vson_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_vson_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_vson_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_vson_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_vson_server:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vson_server_oam_net_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_vson_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_vson_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_vson_server_oam_net_port_0:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_vson_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_vson_server_oam_net_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_vson_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_vson_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
+      endpoint_vson_server:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_vson_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_vson_server_oam_net_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.rate_vson_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_vson_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_vson_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_vson_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_vson_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_vson_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_vson_server_oam_net_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.read.bytes_vson_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_vson_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_vson_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_vson_server_oam_net_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.root.size_vson_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.ephemeral.size_vson_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_vson_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_vson_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_vson_server:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_vson_server_oam_net_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_vson_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_vson_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_vson_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_vson_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.delta_vson_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_vson_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_vson_server:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_vson_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_vson_server:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_vson_server:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vson_server_oam_net_port_0:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.incoming.bytes.rate_vson_server_oam_net_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.read.requests_vson_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.abstract.nodes.heat.vson_vm_8:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
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 535f2ea..e92abe8 100644 (file)
@@ -1384,6 +1384,157 @@ node_types:
         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:
@@ -6453,3 +6604,24 @@ node_types:
         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
index 90dfb74..05256ec 100644 (file)
@@ -1712,8 +1712,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
@@ -2281,304 +2281,1485 @@ 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
+      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_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:
+      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:
+      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:
-        type: tosca.capabilities.Endpoint.Admin
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
         occurrences:
         - 1
         - UNBOUNDED
-      memory.usage_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
-      host_compute:
+      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
-      feature_compute:
+      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
-      disk.device.write.bytes_compute:
+      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_compute:
+      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.write.bytes.rate_compute:
+      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
-      scalable_compute:
-        type: tosca.capabilities.Scalable
+  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
+    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.device.read.requests_compute:
+      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
-      disk.allocation_compute:
+      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.device.capacity_compute:
+      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.allocation_compute:
+      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
-      cpu.delta_compute:
+      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
-      binding_compute:
-        type: tosca.capabilities.network.Bindable
+      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:
+      p2:
+        type: string
+        description: UID of OAM network
+        required: true
+        status: SUPPORTED
+      port_oam_port_1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      availabilityzone_name:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      port_oam_port_0_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_port_1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      oam_server_name:
+        type: string
+        description: oam server name
+        required: true
+        status: SUPPORTED
+      port_oam_port_0_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_port_1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_port_1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_oam_port_1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_oam_port_1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_oam_port_0_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_oam_port_1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      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
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+      oam_net_gw:
+        type: string
+        description: CPS network gateway
+        required: true
+        status: SUPPORTED
+      port_oam_port_0_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        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_oam_port_0_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_oam_port_0_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_oam_port_1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_oam_port_0_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_oam_port_0_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      shared_security_group_id1:
+        type: string
+        description: UID of OAM network
+        required: true
+        status: SUPPORTED
+    attributes:
+      server_oam_id:
+        type: string
+        description: the oam nova service id
+        status: SUPPORTED
+    requirements:
+    - dependency_oam_port_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_oam_port_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - 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_oam_port_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_oam_port_1:
+        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
+      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
+      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
+      network.incoming.bytes.rate_oam_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_oam_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_oam_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_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.bytes_oam_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_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_oam_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_oam_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_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.bytes.rate_oam_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_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.bytes.rate_oam_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_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_oam_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_oam_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_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
+      attachment_oam_port_1:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_oam_port_0:
+        type: tosca.capabilities.Attachment
+        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
+      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
+      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
+      feature_oam_port_0:
+        type: tosca.capabilities.Node
+        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
+      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
+      feature_oam_port_1:
+        type: tosca.capabilities.Node
+        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
+      network.incoming.packets.rate_oam_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.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
+      network.incoming.packets.rate_oam_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.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
+      network.outpoing.packets_oam_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_server_oam:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      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
+      binding_oam_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_oam_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_oam_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_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
+      binding_oam_port_1:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.outpoing.packets_oam_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.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
+      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
+      binding_server_oam:
+        type: tosca.capabilities.network.Bindable
+        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
+      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
+      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
+  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 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 2eeae9a..34e096b 100644 (file)
@@ -1133,8 +1133,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
@@ -1702,296 +1702,1459 @@ 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:
-      vm_image_name:
+      port_pcm_port_0_network_role:
         type: string
         required: true
         status: SUPPORTED
-      index_value:
+      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: 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
-        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_name:
+      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: string
-      vm_flavor_name:
+          type: org.openecomp.datatypes.network.IpRequirements
+      oam_net_gw:
         type: string
+        description: CPS network gateway
         required: true
         status: SUPPORTED
-      compute_compute_config_drive:
+      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: boolean
+          type: org.openecomp.datatypes.network.VlanRequirements
+      pcm_flavor_name:
+        type: string
+        description: flavor name of PCRF CM instance
+        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: 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:
-        type: tosca.capabilities.Endpoint.Admin
+      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.compute:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      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
+    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
-      memory.usage_compute:
+      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
-      host_compute:
-        type: tosca.capabilities.Container
+      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
+      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:
+      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
+    attributes:
+      compute_instance_name:
+        type: string
+        status: SUPPORTED
\ No newline at end of file
index 16dda32..e48040b 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.compute:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -979,3 +1538,82 @@ 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
+      port_compute_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
+      port_compute_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      compute_compute_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_compute_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_compute_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_compute_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_compute_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_compute_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_compute_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_compute_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_compute_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
\ No newline at end of file
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 181027f..4035ba8 100644 (file)
@@ -438,6 +438,103 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.pcm_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_pcm_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_pcm_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_pcm_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pcm_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      compute_pcm_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_pcm_server_config_drive:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
+      port_pcm_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
   org.openecomp.resource.abstract.nodes.heat.nested-pcm_v0.1:
     derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
     properties:
@@ -1480,3 +1577,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 fb024af..a53c1b2 100644 (file)
@@ -5,6 +5,103 @@ 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_pcm_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_pcm_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_pcm_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pcm_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_pcm_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_pcm_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      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_pcm_port_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:
@@ -871,6 +968,103 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.pcm_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_pcm_server_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_pcm_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_pcm_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_pcm_server_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_pcm_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_pcm_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      compute_pcm_server_user_data_format:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_pcm_server_config_drive:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: boolean
+      port_pcm_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_pcm_port_security_groups:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
   org.openecomp.resource.abstract.nodes.heat.nested-pcm_v0.1:
     derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
     properties:
@@ -1632,4 +1826,4 @@ node_types:
         type: tosca.capabilities.OperatingSystem
         occurrences:
         - 1
-        - UNBOUNDED
+        - UNBOUNDED
\ No newline at end of file
index c1c907f..65531c3 100644 (file)
@@ -1123,6 +1123,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:
@@ -1681,4 +2240,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 c1c907f..65531c3 100644 (file)
@@ -1123,6 +1123,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:
@@ -1681,4 +2240,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 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 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 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 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 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 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 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 b994e51..92ed531 100644 (file)
@@ -794,3 +794,222 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.FSB1:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_FSB1_Internal_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_FSB1_Internal_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_FSB1_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_FSB2_Internal2_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal1_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal2_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal2_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal1_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_FSB2_Internal1_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_FSB1_Internal_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal1_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal1_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB1_Internal_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB1_Internal_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB1_Internal_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal1_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB2_Internal2_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal2_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal2_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_FSB_OAM_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_FSB1_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB1_Internal_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_FSB_OAM_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal2_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB2_Internal2_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal1_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal2_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal1_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal1_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_FSB2_Internal2_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal1_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_FSB1_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
index 78f448c..b6cc642 100644 (file)
@@ -295,4 +295,37 @@ node_types:
         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
+        - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.FSB1:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      compute_FSB1_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_FSB1_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_FSB1_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
index 3061694..4d5301f 100644 (file)
@@ -670,3 +670,176 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.FSB1:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_FSB1_Internal_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_FSB1_Internal_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_FSB1_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_FSB2_Internal_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_FSB1_Internal_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB1_Internal_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_FSB1_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB1_Internal_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_FSB_OAM_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_FSB2_Internal_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB1_Internal_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_FSB1_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB2_Internal_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
index 83ade4a..2cc31a0 100644 (file)
@@ -571,3 +571,155 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.FSB1:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_FSB1_Internal_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_FSB1_Internal_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_FSB1_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_FSB2_Internal_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_FSB1_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB1_Internal_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_FSB2_Internal_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB1_Internal_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_FSB1_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB2_Internal_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+    attributes:
+      FSB1_FSB2_Internal_tenant_id:
+        type: string
+        status: SUPPORTED
+      FSB1_FSB1_Internal_network_id:
+        type: string
+        status: SUPPORTED
+      FSB1_user_data_format:
+        type: string
+        status: SUPPORTED
+      FSB1_accessIPv6:
+        type: string
+        status: SUPPORTED
+      FSB1_addresses:
+        type: map
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.novaServer.network.AddressInfo
+      FSB1_FSB2_Internal_network_id:
+        type: string
+        status: SUPPORTED
+      FSB1_FSB1_Internal_status:
+        type: string
+        status: SUPPORTED
+      FSB1_FSB1_Internal_device_owner:
+        type: string
+        status: SUPPORTED
index a42219e..e10d530 100644 (file)
@@ -694,3 +694,200 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.FSB1:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_FSB1_Internal_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_FSB1_Internal_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_FSB1_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_FSB2_Internal_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_FSB1_Internal_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB1_Internal_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_FSB1_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB1_Internal_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_FSB_OAM_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_FSB2_Internal_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB1_Internal_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_FSB1_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB2_Internal_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+    attributes:
+      FSB1_FSB_OAM_status:
+        type: string
+        status: SUPPORTED
+      FSB1_FSB2_Internal_tenant_id:
+        type: string
+        status: SUPPORTED
+      FSB1_FSB1_Internal_network_id:
+        type: string
+        status: SUPPORTED
+      FSB1_accessIPv6:
+        type: string
+        status: SUPPORTED
+      FSB1_addresses:
+        type: map
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.novaServer.network.AddressInfo
+      FSB1_FSB2_Internal_network_id:
+        type: string
+        status: SUPPORTED
+      FSB1_FSB1_Internal_device_owner:
+        type: string
+        status: SUPPORTED
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 7c1d535..d16a04d 100644 (file)
@@ -565,3 +565,149 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.FSB1:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_FSB1_Internal_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_FSB1_Internal_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_FSB1_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_FSB2_Internal_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      compute_FSB1_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
+      port_FSB2_Internal_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB2_Internal_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      compute_FSB1_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB1_Internal_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+    attributes:
+      FSB1_FSB2_Internal_tenant_id:
+        type: string
+        status: SUPPORTED
+      FSB1_FSB1_Internal_network_id:
+        type: string
+        status: SUPPORTED
+      FSB1_user_data_format:
+        type: string
+        status: SUPPORTED
+      FSB1_accessIPv6:
+        type: string
+        status: SUPPORTED
+      FSB1_addresses:
+        type: map
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.novaServer.network.AddressInfo
+      FSB1_FSB2_Internal_network_id:
+        type: string
+        status: SUPPORTED
+      FSB1_FSB1_Internal_status:
+        type: string
+        status: SUPPORTED
+      FSB1_FSB1_Internal_device_owner:
+        type: string
+        status: SUPPORTED
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 d2ea7e9..e57d35a 100644 (file)
@@ -676,3 +676,182 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.FSB1:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      port_FSB1_Internal_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_FSB1_Internal_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_FSB1_Internal_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_FSB2_Internal_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB1_Internal_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_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_FSB_OAM_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_mac_address:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_FSB1_Internal_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_fixed_ips:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      port_FSB2_Internal_network:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_FSB1_Internal_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      port_FSB_OAM_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      port_FSB2_Internal_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+    attributes:
+      FSB1_FSB_OAM_status:
+        type: string
+        status: SUPPORTED
+      FSB1_FSB2_Internal_tenant_id:
+        type: string
+        status: SUPPORTED
+      FSB1_FSB1_Internal_network_id:
+        type: string
+        status: SUPPORTED
+      FSB1_accessIPv6:
+        type: string
+        status: SUPPORTED
+      FSB1_addresses:
+        type: map
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.heat.novaServer.network.AddressInfo
+      FSB1_FSB2_Internal_network_id:
+        type: string
+        status: SUPPORTED
+      FSB1_FSB1_Internal_device_owner:
+        type: string
+        status: SUPPORTED
index a424a5d..7f16b2f 100644 (file)
@@ -329,3 +329,297 @@ node_types:
         occurrences:
         - 1
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.pcm_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      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
+      cps_net_ips:
+        type: string
+        description: CPS network ip
+        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_volumes:
+        type: string
+        description: CPS Cluman Cinder Volume
+        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
+      pcm_server_name:
+        type: string
+        description: PCRF CM server name
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      cps_net_mask:
+        type: string
+        description: CPS network mask
+        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
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+    attributes:
+      server_pcm_id:
+        type: string
+        description: the pcm nova service id
+        status: SUPPORTED
+    requirements:
+    - link_pcm_port_1:
+        capability: tosca.capabilities.network.Linkable
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - local_storage_server_pcm:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_1_server_pcm_005:
+        capability: tosca.capabilities.network.Linkable
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - local_storage_server_pcm_server_pcm_005:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_0_server_pcm_005:
+        capability: tosca.capabilities.network.Linkable
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - link_pcm_port_0:
+        capability: tosca.capabilities.network.Linkable
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      endpoint_server_pcm:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_network_server_pcm_005:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_pcm_server_pcm_005:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_pcm_server_pcm_005:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pcm_server_pcm_005:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_pcm_server_pcm_005:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_network:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pcm_port_1_server_pcm_005:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      attachment_pcm_port_0_server_pcm_005:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      link_network_server_pcm_005:
+        type: tosca.capabilities.network.Linkable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pcm:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_pcm_server_pcm_005:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_network:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_pcm_port_0_server_pcm_005:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      feature_server_pcm_005:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_pcm:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_pcm_server_pcm_005:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_0_server_pcm_005:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_network_server_pcm_005:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_pcm:
+        type: tosca.capabilities.network.Bindable
+        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
+      link_network:
+        type: tosca.capabilities.network.Linkable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_pcm:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_pcm:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_1_server_pcm_005:
+        type: tosca.capabilities.Node
+        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
+      attachment_pcm_port_1_server_pcm_005:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
index 752628d..217eb69 100644 (file)
@@ -275,6 +275,168 @@ node_types:
         occurrences:
         - 0
         - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.pcm_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      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
+      pcm_server_name:
+        type: string
+        description: PCRF CM server name
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      cps_net_mask:
+        type: string
+        description: CPS network mask
+        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
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+    attributes:
+      server_pcm_id:
+        type: string
+        description: the pcm nova service id
+        status: SUPPORTED
+    requirements:
+    - link_pcm_port_1:
+        capability: tosca.capabilities.network.Linkable
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - local_storage_server_pcm:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_0:
+        capability: tosca.capabilities.network.Linkable
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      endpoint_server_pcm:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_pcm:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_server_pcm:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_pcm:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_pcm:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_pcm:
+        type: tosca.capabilities.network.Bindable
+        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
+      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
   org.openecomp.resource.abstract.nodes.heat.oam_server:
     derived_from: org.openecomp.resource.abstract.nodes.VFC
     properties:
@@ -436,4 +598,166 @@ node_types:
         - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
         occurrences:
         - 0
-        - UNBOUNDED
\ No newline at end of file
+        - UNBOUNDED
+  org.openecomp.resource.vfc.nodes.heat.oam_server:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    properties:
+      availabilityzone_name:
+        type: string
+        description: availabilityzone name
+        required: true
+        status: SUPPORTED
+      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
+      oam_server_name:
+        type: string
+        description: oam server name
+        required: true
+        status: SUPPORTED
+      pcm_vol:
+        type: string
+        description: CPS Cluman Cinder Volume
+        required: true
+        status: SUPPORTED
+      oam_image_name:
+        type: string
+        description: oam image name
+        required: true
+        status: SUPPORTED
+      cps_net_name:
+        type: string
+        description: CPS network name
+        required: true
+        status: SUPPORTED
+      cps_net_mask:
+        type: string
+        description: CPS network mask
+        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
+      oam_net_name:
+        type: string
+        description: OAM network name
+        required: true
+        status: SUPPORTED
+    attributes:
+      server_oam_id:
+        type: string
+        description: the oam nova service id
+        status: SUPPORTED
+    requirements:
+    - local_storage_server_oam:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_pcm_port_1:
+        capability: tosca.capabilities.network.Linkable
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - link_pcm_port_0:
+        capability: tosca.capabilities.network.Linkable
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      host_server_oam:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_server_oam:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_server_oam:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_server_oam:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_server_oam:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_pcm_port_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_server_oam:
+        type: tosca.capabilities.network.Bindable
+        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
+      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
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 2758e3d..ccadece 100644 (file)
@@ -61,6 +61,11 @@ public class VspDetails implements VersionableEntity {
   private Long writetimeMicroSeconds;
 
   private String onboardingMethod;
+
+  private String onboardingOrigin;
+
+  private String networkPackageName;
+
   public VspDetails() {
   }
 
@@ -215,12 +220,29 @@ public class VspDetails implements VersionableEntity {
     this.oldVersion = oldVersion;
   }
 
+  public String getOnboardingOrigin() {
+    return onboardingOrigin;
+  }
+
+  public void setOnboardingOrigin(String onboardingOrigin) {
+    this.onboardingOrigin = onboardingOrigin;
+  }
+
   public String getOnboardingMethod() {
     return onboardingMethod;
   }
   public void setOnboardingMethod(String onboardingMethod) {
     this.onboardingMethod = onboardingMethod;
   }
+
+  public String getNetworkPackageName() {
+    return networkPackageName;
+  }
+
+  public void setNetworkPackageName(String networkPackageName) {
+    this.networkPackageName = networkPackageName;
+  }
+
   @Override
   public String toString() {
     return String.format(
index 4ca623e..6cc639f 100644 (file)
 package org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule;
 
 import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.datatypes.error.ErrorMessage;
 import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
 import org.openecomp.sdc.vendorsoftwareproduct.types.CandidateDataEntityTo;
 import org.openecomp.sdc.vendorsoftwareproduct.types.candidateheat.AnalyzedZipHeatFiles;
@@ -61,9 +61,12 @@ public interface CandidateService {
 
   Optional<ByteArrayInputStream> fetchZipFileByteArrayInputStream(String vspId,
                                                                   OrchestrationTemplateCandidateData candidateDataEntity,
-                                                                  String manifest, Map<String, List<ErrorMessage>> uploadErrors);
+                                                                  String manifest,
+                                                                  OnboardingTypesEnum type,
+                                                                  Map<String, List<ErrorMessage>> uploadErrors);
 
-  byte[] replaceManifestInZip(ByteBuffer contentData, String manifest, String vspId)
+  byte[] replaceManifestInZip(ByteBuffer contentData, String manifest, String vspId,
+                              OnboardingTypesEnum type)
       throws IOException;
 
   Optional<ManifestContent> createManifest(VspDetails vspDetails,
index 9540f3d..ca53293 100644 (file)
@@ -75,6 +75,14 @@ public class CandidateEntityBuilder {
     return candidateDataEntity;
   }
 
+//  public OrchestrationTemplateCandidateData buildOrchestrationTemplateFromCsar(VspDetails vspDetails,
+//                                                                               byte[] uploadedFileData,
+//                                                                               FileContentHandler contentMap,
+//                                                                               Map<String, List<ErrorMessage>> uploadErrors,
+//                                                                               String user){
+//
+//  }
+
   private HeatStructureTree getHeatStructureTree(VspDetails vspDetails,
                                                  FileContentHandler contentMap,
                                                  AnalyzedZipHeatFiles analyzedZipHeatFiles) {
index eef90d4..7ad7929 100644 (file)
@@ -200,6 +200,8 @@ public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareP
     info.addProperty(InfoPropertyName.featureGroups.name(), vspDetails.getFeatureGroups());
     info.addProperty(InfoPropertyName.oldVersion.name(), vspDetails.getOldVersion());
     info.addProperty(InfoPropertyName.onboardingMethod.name(), vspDetails.getOnboardingMethod());
+    info.addProperty(InfoPropertyName.obBoardingOrigin.name(), vspDetails.getOnboardingOrigin());
+    info.addProperty(InfoPropertyName.networkPackageName.name(), vspDetails.getNetworkPackageName());
   }
 
   private VspDetails mapInfoToVspDetails(String vspId, Version version, Info info,
@@ -215,6 +217,7 @@ public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareP
         Version.valueOf(info.getProperty(InfoPropertyName.vendorVersion.name())));
     vspDetails.setLicenseAgreement(info.getProperty(InfoPropertyName.licenseAgreement.name()));
     vspDetails.setFeatureGroups(info.getProperty(InfoPropertyName.featureGroups.name()));
+
     vspDetails.setWritetimeMicroSeconds(
         modificationTime == null ? creationTime.getTime() : modificationTime.getTime());
     vspDetails.setVersion(version);
@@ -223,7 +226,8 @@ public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareP
     //Boolean oldVersion = ind == null || "true".equals( ind.toLowerCase());
     vspDetails.setOldVersion(oldVersion);
     vspDetails.setOnboardingMethod(info.getProperty(InfoPropertyName.onboardingMethod.name()));
-
+    vspDetails.setOnboardingOrigin(info.getProperty(InfoPropertyName.obBoardingOrigin.name()));
+    vspDetails.setNetworkPackageName(info.getProperty(InfoPropertyName.networkPackageName.name()));
     return vspDetails;
   }
 
@@ -239,7 +243,9 @@ public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareP
     licenseAgreement,
     featureGroups,
     oldVersion,
-    onboardingMethod
+    onboardingMethod,
+    obBoardingOrigin,
+    networkPackageName
   }
 
 }
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 6ccece1..e5f1a4c 100644 (file)
@@ -23,6 +23,7 @@ package org.openecomp.sdc.vendorsoftwareproduct.services.impl.filedatastructurem
 import org.apache.commons.collections4.CollectionUtils;
 import org.openecomp.core.utilities.file.FileContentHandler;
 import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.common.errors.CoreException;
 import org.openecomp.sdc.common.errors.ErrorCategory;
 import org.openecomp.sdc.common.errors.ErrorCode;
@@ -89,17 +90,17 @@ public class CandidateServiceImpl implements CandidateService {
     }
 
     @Override
-    public Optional<ErrorMessage> validateNonEmptyFileToUpload(InputStream heatFileToUpload) {
+    public Optional<ErrorMessage> validateNonEmptyFileToUpload(InputStream fileToUpload) {
 
 
         mdcDataDebugMessage.debugEntryMessage(null);
 
-        if (Objects.isNull(heatFileToUpload)) {
+        if (Objects.isNull(fileToUpload)) {
             return Optional.of(new ErrorMessage(ErrorLevel.ERROR,
                 Messages.NO_ZIP_FILE_WAS_UPLOADED_OR_ZIP_NOT_EXIST.getErrorMessage()));
         } else {
             try {
-                int available = heatFileToUpload.available();
+                int available = fileToUpload.available();
                 if (available == 0) {
                     mdcDataDebugMessage.debugExitMessage(null);
                     return Optional.of(new ErrorMessage(ErrorLevel.ERROR,
@@ -321,10 +322,7 @@ public class CandidateServiceImpl implements CandidateService {
     public void updateCandidateUploadData(OrchestrationTemplateCandidateData uploadData,
                                           String itemId) {
         mdcDataDebugMessage.debugEntryMessage(null);
-
-        //vendorSoftwareProductDao.updateCandidateUploadData(uploadData);
         orchestrationTemplateCandidateDataDao.update(itemId, uploadData);
-
         mdcDataDebugMessage.debugExitMessage(null);
     }
 
@@ -393,11 +391,12 @@ public class CandidateServiceImpl implements CandidateService {
     public Optional<ByteArrayInputStream> fetchZipFileByteArrayInputStream(String vspId,
                                                                            OrchestrationTemplateCandidateData candidateDataEntity,
                                                                            String manifest,
+                                                                           OnboardingTypesEnum type,
                                                                            Map<String, List<ErrorMessage>> uploadErrors) {
         byte[] file;
         ByteArrayInputStream byteArrayInputStream = null;
         try {
-            file = replaceManifestInZip(candidateDataEntity.getContentData(), manifest, vspId);
+            file = replaceManifestInZip(candidateDataEntity.getContentData(), manifest, vspId, type);
             byteArrayInputStream = new ByteArrayInputStream(
                 Objects.isNull(file) ? candidateDataEntity.getContentData().array()
                     : file);
@@ -413,7 +412,8 @@ public class CandidateServiceImpl implements CandidateService {
     }
 
     @Override
-    public byte[] replaceManifestInZip(ByteBuffer contentData, String manifest, String vspId)
+    public byte[] replaceManifestInZip(ByteBuffer contentData, String manifest, String vspId,
+                                       OnboardingTypesEnum type)
         throws IOException {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
 
@@ -433,12 +433,12 @@ public class CandidateServiceImpl implements CandidateService {
                     }
                 } else {
                     manifestWritten = true;
-                    writeManifest(manifest, zos);
+                    writeManifest(manifest, type, zos);
                 }
                 zos.closeEntry();
             }
             if (!manifestWritten) {
-                writeManifest(manifest, zos);
+                writeManifest(manifest, type, zos);
                 zos.closeEntry();
             }
         }
@@ -451,7 +451,14 @@ public class CandidateServiceImpl implements CandidateService {
         return candidateServiceValidator.validateFileDataStructure(filesDataStructure);
     }
 
-    private void writeManifest(String manifest, ZipOutputStream zos) throws IOException {
+    private void writeManifest(String manifest,
+                               OnboardingTypesEnum type,
+                               ZipOutputStream zos) throws IOException {
+
+        if(isManifestNeedsToGetWritten(type)){
+            return;
+        }
+
         zos.putNextEntry(new ZipEntry(SdcCommon.MANIFEST_NAME));
         try (InputStream manifestStream = new ByteArrayInputStream(
             manifest.getBytes(StandardCharsets.UTF_8))) {
@@ -463,6 +470,10 @@ public class CandidateServiceImpl implements CandidateService {
         }
     }
 
+    private boolean isManifestNeedsToGetWritten(OnboardingTypesEnum type) {
+        return type.equals(OnboardingTypesEnum.CSAR);
+    }
+
     private void handleArtifactsFromTree(HeatStructureTree tree, FilesDataStructure structure) {
 
         if (Objects.isNull(tree) || Objects.isNull(tree.getArtifacts())) {
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/pom.xml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/pom.xml
new file mode 100644 (file)
index 0000000..faf890f
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <modelVersion>4.0.0</modelVersion>
+    <dependencies>
+        <dependency>
+            <groupId>org.openecomp.sdc.common</groupId>
+            <artifactId>openecomp-tosca-datatype</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc.core</groupId>
+            <artifactId>openecomp-tosca-lib</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc.core</groupId>
+            <artifactId>openecomp-facade-core</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <parent>
+        <groupId>org.openecomp.sdc</groupId>
+        <artifactId>openecomp-tosca-converter-lib</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.openecomp.sdc</groupId>
+    <artifactId>openecomp-tosca-converter-api</artifactId>
+    <version>1.1.0-SNAPSHOT</version>
+
+    
+</project>
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/ServiceTemplateReaderService.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/ServiceTemplateReaderService.java
new file mode 100644 (file)
index 0000000..09c823c
--- /dev/null
@@ -0,0 +1,24 @@
+package org.openecomp.core.converter;
+
+import java.util.Map;
+
+public interface ServiceTemplateReaderService {
+
+  Map<String, Object> readServiceTemplate(byte[] serivceTemplateContent);
+
+  Object getMetadata();
+
+  Object getToscaVersion();
+
+  Object getNodeTypes();
+
+  Object getTopologyTemplate();
+
+  Map<String, Object> getNodeTemplates();
+
+  Map<String, Object> getInputs();
+
+  Map<String, Object> getOutputs();
+
+  Map<String, Object> getSubstitutionMappings();
+}
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/ToscaConverter.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/ToscaConverter.java
new file mode 100644 (file)
index 0000000..543d323
--- /dev/null
@@ -0,0 +1,12 @@
+package org.openecomp.core.converter;
+
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
+
+import java.io.IOException;
+
+public interface ToscaConverter {
+
+  ToscaServiceModel convert(FileContentHandler fileContentHandler)
+      throws IOException;
+}
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/api/ToscaConverterManager.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/api/ToscaConverterManager.java
new file mode 100644 (file)
index 0000000..1cf010c
--- /dev/null
@@ -0,0 +1,9 @@
+package org.openecomp.core.converter.api;
+
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
+
+public interface ToscaConverterManager {
+
+  ToscaServiceModel convert(String csarName, FileContentHandler fileContentHandler);
+}
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/datatypes/Constants.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/datatypes/Constants.java
new file mode 100644 (file)
index 0000000..6f7e6be
--- /dev/null
@@ -0,0 +1,45 @@
+package org.openecomp.core.converter.datatypes;
+
+import java.io.File;
+
+public class Constants {
+  public static final String mainStName = "MainServiceTemplate.yaml";
+  public static final String globalStName = "GlobalSubstitutionTypesServiceTemplate.yaml";
+  public static final String manifestFileName = "MainServiceTemplate.mf";
+  public static final String definitionsDir = "Definitions/";
+  public static final String metadataFile = "TOSCA-Metadata/TOSCA.meta";
+
+
+  public static final String definitionVersion = "tosca_definitions_version";
+  private static final String DEFAULT_NAMESPACE = "tosca_default_namespace";
+  private static final String TEMPLATE_NAME = "template_name";
+  public static final String topologyTemplate = "topology_template";
+  private static final String TEMPLATE_AUTHOR = "template_author";
+  private static final String TEMPLATE_VERSION = "template_version";
+  private static final String DESCRIPTION = "description";
+  private static final String IMPORTS = "imports";
+  private static final String DSL_DEFINITIONS = "dsl_definitions";
+  public static final String nodeType = "node_type";
+  public static final String nodeTypes = "node_types";
+  private static final String RELATIONSHIP_TYPES = "relationship_types";
+  private static final String RELATIONSHIP_TEMPLATES = "relationship_templates";
+  private static final String CAPABILITY_TYPES = "capability_types";
+  private static final String ARTIFACT_TYPES = "artifact_types";
+  private static final String DATA_TYPES = "data_types";
+  private static final String INTERFACE_TYPES = "interface_types";
+  private static final String POLICY_TYPES = "policy_types";
+  private static final String GROUP_TYPES = "group_types";
+  private static final String REPOSITORIES = "repositories";
+  public static final String metadata = "metadata";
+  public static final String nodeTemplates = "node_templates";
+  public static final String inputs = "inputs";
+  public static final String outputs = "outputs";
+  public static final String substitutionMappings = "substitution_mappings";
+  public static final String capabilities = "capabilities";
+  public static final String requirements = "requirements";
+
+  public static final String openecompHeatIndex = "openecomp_heat_index";
+  public static final String globalSubstitution = "GlobalSubstitutionTypes";
+
+  public static final String externalFilesFolder = "External" + File.separator;
+}
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/datatypes/CsarFileTypes.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/datatypes/CsarFileTypes.java
new file mode 100644 (file)
index 0000000..323bd8a
--- /dev/null
@@ -0,0 +1,9 @@
+package org.openecomp.core.converter.datatypes;
+
+public enum  CsarFileTypes {
+  mainServiceTemplate,
+  globalServiceTemplate,
+  externalFile,
+  toscaMetadata,
+  definitionsFile,;
+}
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/factory/ToscaConverterFactory.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/factory/ToscaConverterFactory.java
new file mode 100644 (file)
index 0000000..7506759
--- /dev/null
@@ -0,0 +1,12 @@
+package org.openecomp.core.converter.factory;
+
+import org.openecomp.core.converter.ToscaConverter;
+import org.openecomp.core.factory.api.AbstractComponentFactory;
+import org.openecomp.core.factory.api.AbstractFactory;
+
+public abstract class ToscaConverterFactory extends AbstractComponentFactory<ToscaConverter> {
+
+  public static ToscaConverterFactory getInstance(){
+    return AbstractFactory.getInstance(ToscaConverterFactory.class);
+  }
+}
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/resources/factoryConfiguration.json b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/resources/factoryConfiguration.json
new file mode 100644 (file)
index 0000000..d9f4ff3
--- /dev/null
@@ -0,0 +1,3 @@
+{
+  "org.openecomp.core.converter.factory.ToscaConverterFactory" : "org.openecomp.core.impl.factory.ToscaConverterFactoryImpl"
+}
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/pom.xml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/pom.xml
new file mode 100644 (file)
index 0000000..39f02be
--- /dev/null
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <modelVersion>4.0.0</modelVersion>
+    <dependencies>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-tosca-converter-api</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc.core</groupId>
+            <artifactId>openecomp-tosca-lib</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc.core</groupId>
+            <artifactId>openecomp-facade-core</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc.jtosca</groupId>
+            <artifactId>jtosca</artifactId>
+            <version>1.1.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-translator-core</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <parent>
+        <groupId>org.openecomp.sdc</groupId>
+        <artifactId>openecomp-tosca-converter-lib</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.openecomp.sdc</groupId>
+    <artifactId>openecomp-tosca-converter-core</artifactId>
+    <version>1.1.0-SNAPSHOT</version>
+
+    
+</project>
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/GlobalSubstitutionServiceTemplate.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/GlobalSubstitutionServiceTemplate.java
new file mode 100644 (file)
index 0000000..778445c
--- /dev/null
@@ -0,0 +1,87 @@
+package org.openecomp.core.impl;
+
+import org.apache.commons.collections4.MapUtils;
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerFactory;
+import org.openecomp.sdc.tosca.datatypes.model.Import;
+import org.openecomp.sdc.tosca.datatypes.model.NodeType;
+import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
+public class GlobalSubstitutionServiceTemplate extends ServiceTemplate {
+    private static final Logger logger = LoggerFactory.getLogger(ServiceTemplate.class);
+
+    public static final String GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME =
+        "GlobalSubstitutionTypesServiceTemplate.yaml";
+    public static final String TEMPLATE_NAME_PROPERTY = "template_name";
+    public static final String DEFININTION_VERSION = "tosca_simple_yaml_1_0_0";
+    public static final String HEAT_INDEX = "openecomp_heat_index";
+    private static final Map<String, ServiceTemplate> globalServiceTemplates =
+        GlobalTypesGenerator.getGlobalTypesServiceTemplate();
+
+    public GlobalSubstitutionServiceTemplate() {
+        super();
+        init();
+    }
+
+
+    public void appendNodes(Map<String, NodeType> nodes) {
+        Optional<Map<String, NodeType>> nodeTypesToAdd =
+            removeExistingGlobalTypes(nodes);
+
+        nodeTypesToAdd.ifPresent(nodeTypes -> getNode_types().putAll(nodeTypes));
+    }
+
+    public void init()   {
+        writeDefinitionSection();
+        writeMetadataSection();
+        writeImportsSection();
+        setNode_types(new HashMap<>());
+    }
+
+    private void writeImportsSection() {
+        List<Map<String, Import>> imports = new ArrayList<>();
+        Map<String, Import> stringImportMap = new HashMap<>();
+        imports.add(stringImportMap);
+        setImports(imports);
+        Import imprtObj = new Import();
+        imprtObj.setFile("openecomp-heat/_index.yml");
+        stringImportMap.put("openecomp_heat_index", imprtObj);
+    }
+
+
+    private void writeMetadataSection() {
+        Map<String, String> metadata = new HashMap<>();
+        metadata.put(TEMPLATE_NAME_PROPERTY, "GlobalSubstitutionTypes");
+        setMetadata(metadata);
+    }
+
+    private void writeDefinitionSection() {
+        setTosca_definitions_version(DEFININTION_VERSION);
+    }
+
+    public Optional<Map<String, NodeType>> removeExistingGlobalTypes(Map<String, NodeType> nodes){
+        Map<String, NodeType> nodeTypesToAdd = new HashMap<>();
+        ServiceTemplate serviceTemplate = globalServiceTemplates.get("openecomp/nodes.yml");
+
+        if(Objects.isNull(serviceTemplate) || MapUtils.isEmpty(serviceTemplate.getNode_types())){
+            return Optional.of(nodes);
+        }
+
+        Map<String, NodeType> globalNodeTypes = serviceTemplate.getNode_types();
+        for(Map.Entry<String, NodeType> nodeTypeEntry : nodes.entrySet()){
+            if(!globalNodeTypes.containsKey(nodeTypeEntry.getKey())){
+                nodeTypesToAdd.put(nodeTypeEntry.getKey(), nodeTypeEntry.getValue());
+            }
+        }
+
+        return Optional.of(nodeTypesToAdd);
+    }
+}
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterImpl.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterImpl.java
new file mode 100644 (file)
index 0000000..69fa33a
--- /dev/null
@@ -0,0 +1,451 @@
+package org.openecomp.core.impl;
+
+import org.apache.commons.collections.MapUtils;
+import org.openecomp.core.converter.ServiceTemplateReaderService;
+import org.openecomp.core.converter.ToscaConverter;
+import org.openecomp.core.converter.datatypes.Constants;
+import org.openecomp.core.converter.datatypes.CsarFileTypes;
+import org.openecomp.core.impl.services.ServiceTemplateReaderServiceImpl;
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.common.errors.ErrorCategory;
+import org.openecomp.sdc.common.errors.ErrorCode;
+import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
+import org.openecomp.sdc.tosca.datatypes.model.*;
+import org.openecomp.sdc.tosca.services.DataModelUtil;
+import org.openecomp.sdc.tosca.services.ToscaUtil;
+import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
+import org.yaml.snakeyaml.error.YAMLException;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
+import java.util.jar.Manifest;
+import java.util.regex.Pattern;
+
+import static org.openecomp.core.converter.datatypes.Constants.*;
+import static org.openecomp.core.impl.GlobalSubstitutionServiceTemplate.GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME;
+
+public class ToscaConverterImpl implements ToscaConverter {
+
+    public ToscaConverterImpl() {
+
+    }
+
+    @Override
+    public ToscaServiceModel convert(FileContentHandler fileContentHandler)
+            throws IOException {
+        Map<String, byte[]> csarFiles = new HashMap<>(fileContentHandler.getFiles());
+        ToscaServiceModel toscaServiceModel = new ToscaServiceModel();
+        Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
+        FileContentHandler artifacts = new FileContentHandler();
+        GlobalSubstitutionServiceTemplate gsst = new GlobalSubstitutionServiceTemplate();
+        for (Map.Entry<String, byte[]> fileEntry : csarFiles.entrySet()) {
+            CsarFileTypes fileType = getFileType(fileEntry.getKey());
+            switch (fileType) {
+                case mainServiceTemplate:
+                    handleServiceTemplate(mainStName, fileEntry.getKey(), csarFiles, serviceTemplates);
+                    break;
+
+                case globalServiceTemplate:
+                    handleServiceTemplate(globalStName, fileEntry.getKey(), csarFiles, serviceTemplates);
+                    break;
+
+                case externalFile:
+                    artifacts.addFile(fileEntry.getKey(), fileEntry.getValue());
+                    break;
+
+                case definitionsFile:
+                    handleDefintionTemplate(fileEntry.getKey(), csarFiles, gsst);
+                    break;
+            }
+        }
+        handleMetadataFile(csarFiles);
+        updateToscaServiceModel(toscaServiceModel, serviceTemplates, artifacts, gsst, csarFiles);
+        return toscaServiceModel;
+    }
+
+    private void handleMetadataFile(Map<String, byte[]> csarFiles) {
+        byte[] bytes = csarFiles.remove(metadataFile);
+        if (bytes != null) {
+            csarFiles.put(metadataFile + ".original", bytes);
+        }
+    }
+
+    private void handleDefintionTemplate(String key, Map<String, byte[]> csarFiles,
+                                         GlobalSubstitutionServiceTemplate gsst) {
+        try {
+            ServiceTemplateReaderService readerService = new ServiceTemplateReaderServiceImpl(csarFiles.get(key));
+            if (readerService == null) {
+                return;
+            }
+            Object nodeTypes = readerService.getNodeTypes();
+            if (nodeTypes instanceof Map) {
+                Map<String, NodeType> nodeTypeMap = (Map<String, NodeType>) nodeTypes;
+                gsst.appendNodes(nodeTypeMap);
+            }
+        } catch (YAMLException ye) {
+            throw new CoreException(new ErrorCode.ErrorCodeBuilder()
+                    .withMessage("Invalid YAML content in file " + key + ". reason - "
+                            + ye.getMessage())
+                    .withCategory(ErrorCategory.APPLICATION).build());
+        }
+    }
+
+    private void updateToscaServiceModel(ToscaServiceModel toscaServiceModel,
+                                         Map<String, ServiceTemplate> serviceTemplates,
+                                         FileContentHandler externalFilesHandler,
+                                         GlobalSubstitutionServiceTemplate globalSubstitutionServiceTemplate,
+                                         Map<String, byte[]> csarFiles) {
+        Collection<ServiceTemplate> globalServiceTemplates =
+                GlobalTypesGenerator.getGlobalTypesServiceTemplate().values();
+        addGlobalServiceTemplates(globalServiceTemplates, serviceTemplates);
+        toscaServiceModel.setEntryDefinitionServiceTemplate(mainStName);
+        toscaServiceModel.setServiceTemplates(serviceTemplates);
+        externalFilesHandler.addFile(metadataFile + ".original",
+            csarFiles.get(metadataFile + ".original"));
+        toscaServiceModel.setArtifactFiles(externalFilesHandler);
+
+        if(MapUtils.isNotEmpty(globalSubstitutionServiceTemplate.getNode_types())) {
+            serviceTemplates
+                .put(GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME, globalSubstitutionServiceTemplate);
+        }
+    }
+
+    private void addGlobalServiceTemplates(Collection<ServiceTemplate> globalServiceTemplates,
+                                           Map<String, ServiceTemplate> serviceTemplates) {
+        for (ServiceTemplate serviceTemplate : globalServiceTemplates) {
+            serviceTemplates.put(ToscaUtil.getServiceTemplateFileName(serviceTemplate), serviceTemplate);
+        }
+    }
+
+    private void handleServiceTemplate(String serviceTemplateName,
+                                       String fileName, Map<String, byte[]> csarFiles,
+                                       Map<String, ServiceTemplate> serviceTemplates) {
+        Optional<ServiceTemplate> serviceTemplate =
+                getServiceTemplateFromCsar(fileName, csarFiles);
+        serviceTemplate.ifPresent(
+                serviceTemplate1 -> addServiceTemplate(serviceTemplateName, serviceTemplate1,
+                        serviceTemplates));
+    }
+
+    private void addServiceTemplate(String serviceTemplateName,
+                                    ServiceTemplate serviceTemplate,
+                                    Map<String, ServiceTemplate> serviceTemplates) {
+        serviceTemplates.put(serviceTemplateName, serviceTemplate);
+    }
+
+    private Optional<byte[]> getManifestContent(Map<String, byte[]> csarFiles) {
+        for (Map.Entry<String, byte[]> csarFileEntry : csarFiles.entrySet()) {
+            if (csarFileEntry.getKey().contains(manifestFileName)) {
+                return Optional.of(csarFileEntry.getValue());
+            }
+        }
+
+        return Optional.empty();
+    }
+
+    private Optional<ServiceTemplate> getServiceTemplateFromCsar(String fileName,
+                                                                 Map<String, byte[]> csarFiles) {
+        byte[] fileContent = csarFiles.get(fileName);
+        ServiceTemplate serviceTemplate = convertServiceTemplate(fileName, fileContent);
+
+        return Optional.of(serviceTemplate);
+    }
+
+    private ServiceTemplate convertServiceTemplate(String serviceTemplateName,
+                                                   byte[] fileContent) {
+        ServiceTemplate serviceTemplate = new ServiceTemplate();
+        try {
+            ServiceTemplateReaderService readerService =
+                    new ServiceTemplateReaderServiceImpl(fileContent);
+            convertMetadata(serviceTemplateName, serviceTemplate, readerService);
+            convertToscaVersion(serviceTemplate, readerService);
+            convertImports(serviceTemplate);
+            convertNodeTypes(serviceTemplate, readerService);
+            convertTopologyTemplate(serviceTemplate, readerService);
+
+        } catch (YAMLException ye) {
+            throw new CoreException(new ErrorCode.ErrorCodeBuilder()
+                    .withMessage("Invalid YAML content in file" + serviceTemplateName + ". reason - "
+                            + ye.getMessage())
+                    .withCategory(ErrorCategory.APPLICATION).build());
+        }
+
+
+        return serviceTemplate;
+    }
+
+    private void convertToscaVersion(ServiceTemplate serviceTemplate,
+                                     ServiceTemplateReaderService readerService) {
+        Object toscaVersion = readerService.getToscaVersion();
+        serviceTemplate.setTosca_definitions_version((String) toscaVersion);
+    }
+
+    private void convertImports(ServiceTemplate serviceTemplate) {
+        serviceTemplate.setImports(new ArrayList<>());
+        serviceTemplate.getImports()
+                .add(createImportMap(openecompHeatIndex, "openecomp-heat/_index.yml"));
+        serviceTemplate.getImports().add(createImportMap(globalSubstitution, globalStName));
+
+    }
+
+    private Map<String, Import> createImportMap(String key, String fileName) {
+        Map<String, Import> importMap = new HashMap<>();
+        Import anImport = new Import();
+        anImport.setFile(fileName);
+        importMap.put(key, anImport);
+
+        return importMap;
+    }
+
+    private void convertMetadata(String serviceTemplateName,
+                                 ServiceTemplate serviceTemplate,
+                                 ServiceTemplateReaderService readerService) {
+        Map<String, Object> metadataToConvert = (Map<String, Object>) readerService.getMetadata();
+        Map<String, String> finalMetadata = new HashMap<>();
+
+        if (MapUtils.isNotEmpty(metadataToConvert)) {
+            for (Map.Entry<String, Object> metadataEntry : metadataToConvert.entrySet()) {
+                if (Objects.isNull(metadataEntry.getValue()) ||
+                        !(metadataEntry.getValue() instanceof String)) {
+                    continue;
+                }
+                finalMetadata.put(metadataEntry.getKey(), (String) metadataEntry.getValue());
+            }
+        }
+
+        finalMetadata.put("template_name", getTemplateNameFromStName(serviceTemplateName));
+        serviceTemplate.setMetadata(finalMetadata);
+    }
+
+    private void convertNodeTypes(ServiceTemplate serviceTemplate, ServiceTemplateReaderService readerService) {
+        Map<String, Object> nodeTypes = (Map<String, Object>) readerService.getNodeTypes();
+        if (MapUtils.isEmpty(nodeTypes)) {
+            return;
+        }
+
+        for (Map.Entry<String, Object> nodeTypeEntry : nodeTypes.entrySet()) {
+            DataModelUtil
+                    .addNodeType(serviceTemplate, nodeTypeEntry.getKey(),
+                            (NodeType) createObjectFromClass(nodeTypeEntry.getKey(), nodeTypeEntry.getValue(),
+                                    NodeType.class));
+        }
+    }
+
+    private void convertTopologyTemplate(ServiceTemplate serviceTemplate,
+                                         ServiceTemplateReaderService readerService) {
+
+        convertInputs(serviceTemplate, readerService);
+        convertNodeTemplates(serviceTemplate, readerService);
+        convertOutputs(serviceTemplate, readerService);
+        convertSubstitutionMappings(serviceTemplate, readerService);
+    }
+
+    private void convertInputs(ServiceTemplate serviceTemplate,
+                               ServiceTemplateReaderService readerService) {
+        Map<String, Object> inputs = readerService.getInputs();
+        addInputsOrOutputsToServiceTemplate(serviceTemplate, inputs, Constants.inputs);
+    }
+
+    private void convertOutputs(ServiceTemplate serviceTemplate,
+                                ServiceTemplateReaderService readerService) {
+        Map<String, Object> outputs = readerService.getOutputs();
+        addInputsOrOutputsToServiceTemplate(serviceTemplate, outputs, Constants.outputs);
+    }
+
+    private void addInputsOrOutputsToServiceTemplate(ServiceTemplate serviceTemplate,
+                                                     Map<String, Object> mapToConvert,
+                                                     String inputsOrOutputs) {
+        if (MapUtils.isEmpty(mapToConvert)) {
+            return;
+        }
+
+        for (Map.Entry<String, Object> entry : mapToConvert.entrySet()) {
+            ParameterDefinition parameterDefinition =
+                    (ParameterDefinition) createObjectFromClass(
+                            entry.getKey(), entry.getValue(), ParameterDefinition.class);
+            addToServiceTemplateAccordingToSection(
+                    serviceTemplate, inputsOrOutputs, entry.getKey(), parameterDefinition);
+        }
+    }
+
+    private void addToServiceTemplateAccordingToSection(ServiceTemplate serviceTemplate,
+                                                        String inputsOrOutputs,
+                                                        String parameterId,
+                                                        ParameterDefinition parameterDefinition) {
+        switch (inputsOrOutputs) {
+            case inputs:
+                DataModelUtil
+                        .addInputParameterToTopologyTemplate(serviceTemplate, parameterId, parameterDefinition);
+                break;
+            case outputs:
+                DataModelUtil
+                        .addOutputParameterToTopologyTemplate(serviceTemplate, parameterId, parameterDefinition);
+        }
+    }
+
+    private void convertNodeTemplates(ServiceTemplate serviceTemplate,
+                                      ServiceTemplateReaderService readerService) {
+        Map<String, Object> nodeTemplates = readerService.getNodeTemplates();
+        if (MapUtils.isEmpty(nodeTemplates)) {
+            return;
+        }
+
+        for (Map.Entry<String, Object> nodeTemplateEntry : nodeTemplates.entrySet()) {
+            NodeTemplate nodeTemplate = convertNodeTemplate(nodeTemplateEntry.getValue());
+            DataModelUtil.addNodeTemplate(serviceTemplate, nodeTemplateEntry.getKey(), nodeTemplate);
+        }
+    }
+
+    private void convertSubstitutionMappings(ServiceTemplate serviceTemplate,
+                                             ServiceTemplateReaderService readerService) {
+        Map<String, Object> substitutionMappings = readerService.getSubstitutionMappings();
+        if (MapUtils.isEmpty(substitutionMappings)) {
+            return;
+        }
+        SubstitutionMapping substitutionMapping = convertSubstitutionMappings(substitutionMappings);
+        DataModelUtil.addSubstitutionMapping(serviceTemplate, substitutionMapping);
+    }
+
+    private SubstitutionMapping convertSubstitutionMappings(Map<String, Object> substitutionMappings) {
+        SubstitutionMapping substitutionMapping = new SubstitutionMapping();
+
+        substitutionMapping.setNode_type((String) substitutionMappings.get(nodeType));
+        substitutionMapping.setCapabilities(
+                convertSubstitutionMappingsSections((Map<String, Object>) substitutionMappings.get(capabilities)));
+        substitutionMapping.setRequirements(
+                convertSubstitutionMappingsSections((Map<String, Object>) substitutionMappings.get(requirements)));
+
+        return substitutionMapping;
+    }
+
+    private Map<String, List<String>> convertSubstitutionMappingsSections(
+            Map<String, Object> sectionToConvert) {
+        Map<String, List<String>> convertedSection = new HashMap<>();
+        if (MapUtils.isEmpty(sectionToConvert)) {
+            return null;
+        }
+
+        for (Map.Entry<String, Object> entry : sectionToConvert.entrySet()) {
+            if (entry.getValue() instanceof List) {
+                convertedSection.put(entry.getKey(), (List<String>) entry.getValue());
+            }
+        }
+
+        return convertedSection;
+    }
+
+    private CsarFileTypes getFileType(String fileName) {
+        if (isMainServiceTemplate(fileName)) {
+            return CsarFileTypes.mainServiceTemplate;
+        } else if (isGlobalServiceTemplate(fileName)) {
+            return CsarFileTypes.globalServiceTemplate;
+        } else if (isDefinitions(fileName)) {
+            return CsarFileTypes.definitionsFile;
+        } else if (isMetadataFile(metadataFile)) {
+            return CsarFileTypes.toscaMetadata;
+        }
+        return CsarFileTypes.externalFile;
+    }
+
+    private Optional<Manifest> getCsarManifest(Map<String, byte[]> csarFiles) throws IOException {
+        Optional<byte[]> manifestContent = getManifestContent(csarFiles);
+
+        if (manifestContent.isPresent()) {
+            ByteArrayInputStream byteInputStream = new ByteArrayInputStream(manifestContent.get());
+
+            return Optional.of(new Manifest(byteInputStream));
+        }
+
+        return Optional.empty();
+    }
+
+    private NodeTemplate convertNodeTemplate(Object candidateNodeTemplate) {
+        NodeTemplate nodeTemplate = new NodeTemplate();
+
+        Map<String, Object> nodeTemplateAsMap = (Map<String, Object>) candidateNodeTemplate;
+        nodeTemplate.setArtifacts((Map<String, ArtifactDefinition>) nodeTemplateAsMap.get("artifacts"));
+        nodeTemplate.setAttributes((Map<String, Object>) nodeTemplateAsMap.get("attributes"));
+        nodeTemplate.setCopy((String) nodeTemplateAsMap.get("copy"));
+        nodeTemplate.setDescription((String) nodeTemplateAsMap.get("description"));
+        nodeTemplate.setDirectives((List<String>) nodeTemplateAsMap.get("directives"));
+        nodeTemplate.setInterfaces(
+                (Map<String, InterfaceDefinition>) nodeTemplateAsMap.get("interfaces"));
+        nodeTemplate.setNode_filter((NodeFilter) nodeTemplateAsMap.get("node_filter"));
+        nodeTemplate.setProperties((Map<String, Object>) nodeTemplateAsMap.get("properties"));
+        nodeTemplate.setRequirements(
+                (List<Map<String, RequirementAssignment>>) nodeTemplateAsMap.get("requirements"));
+        nodeTemplate.setType((String) nodeTemplateAsMap.get("type"));
+        nodeTemplate.setCapabilities(
+                convertCapabilities((Map<String, Object>) nodeTemplateAsMap.get("capabilities")));
+
+        return nodeTemplate;
+    }
+
+    private List<Map<String, CapabilityAssignment>> convertCapabilities(Map<String, Object> capabilities) {
+        List<Map<String, CapabilityAssignment>> convertedCapabilities = new ArrayList<>();
+        if (MapUtils.isEmpty(capabilities)) {
+            return null;
+        }
+        for (Map.Entry<String, Object> capabilityAssignmentEntry : capabilities.entrySet()) {
+            Map<String, CapabilityAssignment> tempMap = new HashMap<>();
+            tempMap.put(capabilityAssignmentEntry.getKey(),
+                    (CapabilityAssignment) createObjectFromClass
+                            (capabilityAssignmentEntry.getKey(), capabilityAssignmentEntry.getValue(), CapabilityAssignment.class));
+            convertedCapabilities.add(tempMap);
+        }
+        return convertedCapabilities;
+    }
+
+    private Object createObjectFromClass(String nodeTypeId,
+                                         Object objectCandidate,
+                                         Class classToCreate) {
+        try {
+            return JsonUtil.json2Object(objectCandidate.toString(), classToCreate);
+        } catch (Exception e) {
+            //todo - return error to user?
+            throw new CoreException(new ErrorCode.ErrorCodeBuilder()
+                    .withCategory(ErrorCategory.APPLICATION)
+                    .withMessage("Can't create Node Type from " + nodeTypeId).build());
+        }
+    }
+
+    private boolean isMainServiceTemplate(String fileName) {
+        return fileName.endsWith(mainStName);
+    }
+
+    private boolean isMetadataFile(String fileName) {
+        return fileName.equals(metadataFile);
+    }
+
+    private boolean isGlobalServiceTemplate(String fileName) {
+        return fileName.endsWith(globalStName);
+    }
+
+    private boolean isDefinitions(String fileName) {
+        return fileName.startsWith(definitionsDir);
+    }
+
+    private String getTemplateNameFromStName(String serviceTemplateName) {
+        String fileNameWithoutDirectories;
+        fileNameWithoutDirectories = getFileNameWithoutDirectories(serviceTemplateName);
+        return fileNameWithoutDirectories.split("ServiceTemplate")[0];
+    }
+
+    private String getFileNameWithoutDirectories(String serviceTemplateName) {
+        String fileNameWithoutDirectories;
+        if (serviceTemplateName.contains("/")) {
+            String[] split = serviceTemplateName.split("/");
+            fileNameWithoutDirectories = split[split.length - 1];
+        } else if (serviceTemplateName.contains(File.separator)) {
+            String[] split = serviceTemplateName.split(Pattern.quote(File.separator));
+            fileNameWithoutDirectories = split[split.length - 1];
+        } else {
+            fileNameWithoutDirectories = serviceTemplateName;
+        }
+        return fileNameWithoutDirectories;
+    }
+}
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterManagerImpl.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterManagerImpl.java
new file mode 100644 (file)
index 0000000..520e418
--- /dev/null
@@ -0,0 +1,49 @@
+package org.openecomp.core.impl;
+
+import org.openecomp.core.converter.ToscaConverter;
+import org.openecomp.core.converter.api.ToscaConverterManager;
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
+
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class ToscaConverterManagerImpl implements ToscaConverterManager {
+
+  private static List<ToscaConverter> toscaConverters;
+  private static final String toscaConverterFileName = "ToscaConverters.json";
+
+  static {
+    toscaConverters = getConvertersList();
+  }
+
+  @Override
+  public ToscaServiceModel convert(String csarName, FileContentHandler fileContentHandler) {
+    return null;
+  }
+
+  private static List<ToscaConverter> getConvertersList(){
+    List<ToscaConverter> toscaConvertersList = new ArrayList<>();
+    Map<String, String> convertersMap = FileUtils.readViaInputStream(toscaConverterFileName,
+            stream -> JsonUtil.json2Object(stream, Map.class));
+    return getToscaConvertersList(toscaConvertersList, convertersMap);
+  }
+
+  private static List<ToscaConverter> getToscaConvertersList(
+      List<ToscaConverter> toscaConvertersList, Map<String, String> convertersMap) {
+    for(String implClassName : convertersMap.values()){
+      try{
+        Class<?> clazz = Class.forName(implClassName);
+        Constructor<?> constructor = clazz.getConstructor();
+        toscaConvertersList.add((ToscaConverter) constructor.newInstance());
+      }catch (Exception e){
+        continue;
+      }
+    }
+    return toscaConvertersList;
+  }
+}
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/factory/ToscaConverterFactoryImpl.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/factory/ToscaConverterFactoryImpl.java
new file mode 100644 (file)
index 0000000..e04cd23
--- /dev/null
@@ -0,0 +1,12 @@
+package org.openecomp.core.impl.factory;
+
+import org.openecomp.core.converter.ToscaConverter;
+import org.openecomp.core.converter.factory.ToscaConverterFactory;
+import org.openecomp.core.impl.ToscaConverterImpl;
+
+public class ToscaConverterFactoryImpl extends ToscaConverterFactory {
+  @Override
+  public ToscaConverter createInterface() {
+    return new ToscaConverterImpl();
+  }
+}
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/services/ServiceTemplateReaderServiceImpl.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/services/ServiceTemplateReaderServiceImpl.java
new file mode 100644 (file)
index 0000000..fa85325
--- /dev/null
@@ -0,0 +1,76 @@
+package org.openecomp.core.impl.services;
+
+import org.openecomp.core.converter.ServiceTemplateReaderService;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.common.errors.ErrorCategory;
+import org.openecomp.sdc.common.errors.ErrorCode;
+import org.openecomp.sdc.tosca.services.YamlUtil;
+import org.yaml.snakeyaml.error.YAMLException;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+import static org.openecomp.core.converter.datatypes.Constants.*;
+
+public class ServiceTemplateReaderServiceImpl implements ServiceTemplateReaderService {
+
+  private Map<String, Object> readServiceTemplate = new HashMap<>();
+
+  public ServiceTemplateReaderServiceImpl(byte[] serviceTemplateContent){
+    this.readServiceTemplate = readServiceTemplate(serviceTemplateContent);
+  }
+
+  @Override
+  public Map<String, Object> readServiceTemplate(byte[] serviceTemplateContent) {
+
+    Map<String, Object> readSt =
+        new YamlUtil().yamlToObject(new String(serviceTemplateContent), Map.class);
+
+    return readSt;
+  }
+
+  @Override
+  public Object getMetadata(){
+    return this.readServiceTemplate.get(metadata);
+  }
+
+  @Override
+  public Object getToscaVersion(){
+    return this.readServiceTemplate.get(definitionVersion);
+  }
+
+  @Override
+  public Object getNodeTypes(){
+    return this.readServiceTemplate.get(nodeTypes);
+  }
+
+  @Override
+  public Object getTopologyTemplate(){
+    return this.readServiceTemplate.get(topologyTemplate);
+  }
+
+  @Override
+  public Map<String, Object> getNodeTemplates(){
+    return Objects.isNull(this.getTopologyTemplate()) ? new HashMap<>()
+        : (Map<String, Object>) ((Map<String, Object>)this.getTopologyTemplate()).get(nodeTemplates);
+  }
+
+  @Override
+  public Map<String, Object> getInputs(){
+    return Objects.isNull(this.getTopologyTemplate()) ? new HashMap<>()
+        : (Map<String, Object>) ((Map<String, Object>)this.getTopologyTemplate()).get(inputs);
+  }
+
+  @Override
+  public Map<String, Object> getOutputs(){
+    return Objects.isNull(this.getTopologyTemplate()) ? new HashMap<>()
+        : (Map<String, Object>) ((Map<String, Object>)this.getTopologyTemplate()).get(outputs);
+  }
+
+  @Override
+  public Map<String, Object> getSubstitutionMappings(){
+    return Objects.isNull(this.getTopologyTemplate()) ? new HashMap<>()
+        : (Map<String, Object>) ((Map<String, Object>)this.getTopologyTemplate()).get(substitutionMappings);
+  }
+}
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/resources/ToscaConverters.json b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/resources/ToscaConverters.json
new file mode 100644 (file)
index 0000000..e1cddeb
--- /dev/null
@@ -0,0 +1,3 @@
+{
+  "ToscaConverter" : "org.openecomp.core.converter.impl.ToscaConverterImpl"
+}
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConverterImplTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConverterImplTest.java
new file mode 100644 (file)
index 0000000..4abed3e
--- /dev/null
@@ -0,0 +1,193 @@
+package org.openecomp.core.converter.impl;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.junit.Test;
+import org.openecomp.core.converter.ToscaConverter;
+import org.openecomp.core.impl.ToscaConverterImpl;
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
+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.ToscaExtensionYamlUtil;
+import org.openecomp.sdc.tosca.services.YamlUtil;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.nio.file.NotDirectoryException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.Objects;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.core.converter.datatypes.Constants.globalStName;
+import static org.openecomp.core.converter.datatypes.Constants.mainStName;
+
+public class ToscaConverterImplTest {
+
+  private static ToscaConverter toscaConverter = new ToscaConverterImpl();
+  private static String inputFilesPath;
+  private static String outputFilesPath;
+  private static Map<String, ServiceTemplate> expectedOutserviceTemplates;
+
+
+  @Test
+  public void testConvertMainSt() throws IOException {
+    inputFilesPath = "/mock/toscaConverter/convertMainSt/in";
+    outputFilesPath = "/mock/toscaConverter/convertMainSt/out";
+
+    FileContentHandler fileContentHandler =
+        createFileContentHandlerFromInput(inputFilesPath);
+
+    expectedOutserviceTemplates = new HashMap<>();
+    loadServiceTemplates(outputFilesPath, new ToscaExtensionYamlUtil(),
+        expectedOutserviceTemplates);
+
+    ToscaServiceModel toscaServiceModel = toscaConverter.convert(fileContentHandler);
+    ServiceTemplate mainSt = toscaServiceModel.getServiceTemplates().get(mainStName);
+
+    checkSTResults(expectedOutserviceTemplates, null, mainSt);
+  }
+
+
+
+  private FileContentHandler createFileContentHandlerFromInput(String inputFilesPath)
+      throws IOException {
+    URL inputFilesUrl = this.getClass().getResource(inputFilesPath);
+    String path = inputFilesUrl.getPath();
+    File directory = new File(path);
+    File[] listFiles = directory.listFiles();
+
+    FileContentHandler fileContentHandler = new FileContentHandler();
+    insertFilesIntoFileContentHandler(listFiles, fileContentHandler);
+    return fileContentHandler;
+  }
+
+  private void insertFilesIntoFileContentHandler(File[] listFiles,
+                                                 FileContentHandler fileContentHandler)
+      throws IOException {
+    byte[] fileContent;
+    if(CollectionUtils.isEmpty(fileContentHandler.getFileList())) {
+      fileContentHandler.setFiles(new HashMap<>());
+    }
+
+    for (File file : listFiles) {
+      if(!file.isDirectory()) {
+        try (FileInputStream fis = new FileInputStream(file)) {
+          fileContent = FileUtils.toByteArray(fis);
+          fileContentHandler.addFile(file.getPath(), fileContent);
+        }
+      }else{
+        File[] currFileList = file.listFiles();
+        insertFilesIntoFileContentHandler(currFileList, fileContentHandler);
+      }
+
+    }
+  }
+
+  private void checkSTResults(
+      Map<String, ServiceTemplate> expectedOutserviceTemplates,
+      ServiceTemplate gloablSubstitutionServiceTemplate, ServiceTemplate mainServiceTemplate) {
+    YamlUtil yamlUtil = new YamlUtil();
+    if (Objects.nonNull(gloablSubstitutionServiceTemplate)) {
+      assertEquals("difference global substitution service template: ",
+          yamlUtil.objectToYaml(expectedOutserviceTemplates.get(globalStName)),
+          yamlUtil.objectToYaml(gloablSubstitutionServiceTemplate));
+    }
+    if (Objects.nonNull(mainServiceTemplate)) {
+      assertEquals("difference main service template: ",
+          yamlUtil.objectToYaml(expectedOutserviceTemplates.get(mainStName)),
+          yamlUtil.objectToYaml(mainServiceTemplate));
+    }
+  }
+
+  public static void loadServiceTemplates(String serviceTemplatesPath,
+                                          ToscaExtensionYamlUtil toscaExtensionYamlUtil,
+                                          Map<String, ServiceTemplate> serviceTemplates)
+      throws IOException {
+    URL urlFile = ToscaConverterImplTest.class.getResource(serviceTemplatesPath);
+    if (urlFile != null) {
+      File pathFile = new File(urlFile.getFile());
+      File[] files = pathFile.listFiles();
+      if (files != null) {
+        addServiceTemplateFiles(serviceTemplates, files, toscaExtensionYamlUtil);
+      } else {
+        throw new NotDirectoryException(serviceTemplatesPath);
+      }
+    } else {
+      throw new NotDirectoryException(serviceTemplatesPath);
+    }
+  }
+
+  private static void addServiceTemplateFiles(Map<String, ServiceTemplate> serviceTemplates,
+                                              File[] files,
+                                              ToscaExtensionYamlUtil toscaExtensionYamlUtil)
+      throws IOException {
+    for (File file : files) {
+      try (InputStream yamlFile = new FileInputStream(file)) {
+        ServiceTemplate serviceTemplateFromYaml =
+            toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
+        createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml, toscaExtensionYamlUtil);
+        serviceTemplates.put(file.getName(), serviceTemplateFromYaml);
+        try {
+          yamlFile.close();
+        } catch (IOException ignore) {
+        }
+      } catch (FileNotFoundException e) {
+        throw e;
+      } catch (IOException e) {
+        throw e;
+      }
+    }
+  }
+
+  private static void createConcreteRequirementObjectsInServiceTemplate(ServiceTemplate
+                                                                            serviceTemplateFromYaml,
+                                                                        ToscaExtensionYamlUtil
+                                                                            toscaExtensionYamlUtil) {
+
+    if (serviceTemplateFromYaml == null
+        || serviceTemplateFromYaml.getTopology_template() == null
+        || serviceTemplateFromYaml.getTopology_template().getNode_templates() == null) {
+      return;
+    }
+
+    //Creating concrete objects
+    Map<String, NodeTemplate> nodeTemplates =
+        serviceTemplateFromYaml.getTopology_template().getNode_templates();
+    for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) {
+      NodeTemplate nodeTemplate = entry.getValue();
+      List<Map<String, RequirementAssignment>> requirements = nodeTemplate.getRequirements();
+      List<Map<String, RequirementAssignment>> concreteRequirementList = new ArrayList<>();
+      if (requirements != null) {
+        ListIterator<Map<String, RequirementAssignment>> reqListIterator = requirements
+            .listIterator();
+        while (reqListIterator.hasNext()){
+          Map<String, RequirementAssignment> requirement = reqListIterator.next();
+          Map<String, RequirementAssignment> concreteRequirement = new HashMap<>();
+          for (Map.Entry<String, RequirementAssignment> reqEntry : requirement.entrySet()) {
+            RequirementAssignment requirementAssignment = (toscaExtensionYamlUtil
+                .yamlToObject(toscaExtensionYamlUtil.objectToYaml(reqEntry.getValue()),
+                    RequirementAssignment.class));
+            concreteRequirement.put(reqEntry.getKey(), requirementAssignment);
+            concreteRequirementList.add(concreteRequirement);
+            reqListIterator.remove();
+          }
+        }
+        requirements.clear();
+        requirements.addAll(concreteRequirementList);
+        nodeTemplate.setRequirements(requirements);
+      }
+      System.out.println();
+      //toscaExtensionYamlUtil.yamlToObject(nodeTemplate, NodeTemplate.class);
+    }
+  }
+}
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConvertorDefinitionsTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConvertorDefinitionsTest.java
new file mode 100644 (file)
index 0000000..1ee8f6c
--- /dev/null
@@ -0,0 +1,56 @@
+package org.openecomp.core.converter.impl;
+
+import org.apache.commons.io.IOUtils;
+import org.junit.Test;
+import org.openecomp.core.impl.GlobalSubstitutionServiceTemplate;
+import org.openecomp.core.impl.ToscaConverterImpl;
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
+import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
+import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
+
+import java.net.URL;
+import java.util.Map;
+import java.util.Set;
+
+import static org.openecomp.sdc.common.utils.CommonUtil.*;
+import static org.junit.Assert.*;
+import static org.openecomp.core.impl.GlobalSubstitutionServiceTemplate.*;
+public class ToscaConvertorDefinitionsTest {
+
+
+    @Test
+    public void loadCsar() throws Exception {
+        URL resource = ToscaConvertorDefinitionsTest.class.getResource("/csar/vCSCF.csar");
+        byte[] bytes = IOUtils.toByteArray(resource);
+        assertNotNull(bytes);
+        FileContentHandler contentMap = validateAndUploadFileContent(OnboardingTypesEnum.CSAR, bytes);
+        ToscaConverterImpl toscaConverter = new ToscaConverterImpl();
+        ToscaServiceModel convert = toscaConverter.convert(contentMap);
+        Map<String, ServiceTemplate> serviceTemplates = convert.getServiceTemplates();
+        assertTrue(serviceTemplates.containsKey(GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME));
+        ServiceTemplate serviceTemplate = serviceTemplates.get(GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME);
+
+        assertNotNull(serviceTemplate);
+        assertTrue(serviceTemplate instanceof GlobalSubstitutionServiceTemplate);
+
+        assertNotNull(serviceTemplate.getMetadata());
+        assertFalse(serviceTemplate.getMetadata().isEmpty());
+        assertTrue(serviceTemplate.getMetadata().containsKey(TEMPLATE_NAME_PROPERTY));
+
+        assertNotNull(serviceTemplate.getImports());
+        assertFalse(serviceTemplate.getImports().isEmpty());
+        assertEquals(1 ,serviceTemplate.getImports().size());
+        assertTrue(serviceTemplate.getImports().get(0).containsKey(HEAT_INDEX));
+
+        assertEquals(DEFININTION_VERSION, serviceTemplate.getTosca_definitions_version());
+
+
+        assertNotNull(serviceTemplate.getNode_types());
+        assertEquals(1, serviceTemplate.getNode_types().size());
+        Set<String> keys = serviceTemplate.getNode_types().keySet();
+        assertTrue(keys.contains("tosca.nodes.nfv.ext.zte.VNF.vCSCF"));
+    }
+
+
+}
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/csar/vCSCF.csar b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/csar/vCSCF.csar
new file mode 100644 (file)
index 0000000..f1b7755
Binary files /dev/null and b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/csar/vCSCF.csar differ
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Artifacts/checksum.lst b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Artifacts/checksum.lst
new file mode 100644 (file)
index 0000000..701f14d
--- /dev/null
@@ -0,0 +1 @@
+Definitions/openovnf__vPCRF.yaml:75bd8963ecc09bf769d0bb5cb475314d
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Artifacts/csar.meta b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Artifacts/csar.meta
new file mode 100644 (file)
index 0000000..aac2fed
--- /dev/null
@@ -0,0 +1,3 @@
+Type:NFAR
+Version:v1.0
+Provider:Huawei
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Definitions/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Definitions/GlobalSubstitutionTypesServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..a881717
--- /dev/null
@@ -0,0 +1,60 @@
+node_types:
+  tosca.nodes.nfv.VDU.Compute:
+    attributes:
+      private_address:
+        type: string
+      public_address:
+        type: string
+      networks:
+        type: string
+      ports:
+        type: string
+    capabilities:
+      scalable:
+        type: tosca.capabilities.Scalable
+      virtual_compute:
+        type: tosca.capabilities.nfv.VirtualCompute
+      endpoint:
+        type: tosca.capabilities.Endpoint.Admin
+      os:
+        type: tosca.capabilities.OperatingSystem
+      virtual_binding:
+        type: tosca.capabilities.nfv.VirtualBindable
+      host:
+        type: tosca.capabilities.Container
+      binding:
+        type: tosca.capabilities.network.Bindable
+      monitoring_parameter:
+        type: tosca.capabilities.nfv.Metric
+    derived_from: tosca.nodes.Root
+    properties:
+      configurable_properties:
+        entry_schema:
+          type: tosca.datatypes.nfv.VnfcConfigurableProperties
+        type: map
+      name:
+        type: string
+      nfvi_constraints:
+        entry_schema:
+          type: string
+        required: false
+        type: list
+      descrption:
+        type: string
+      boot_order:
+        entry_schema:
+          type: string
+        required: false
+        type: list
+    requirements:
+    - local_storage:
+        capability: tosca.capabilities.Attachment
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - virtual_storage:
+        capability: tosca.capabilities.nfv.VirtualStorage
+        occurrences:
+        - 0
+        - UNBOUNDED
+tosca_definitions_version: tosca_simple_yaml_1_0
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/MainServiceTemplate.mf b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/MainServiceTemplate.mf
new file mode 100644 (file)
index 0000000..e45f002
--- /dev/null
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+
+Name: Entry-Definitions
+Name: MainServiceTemplate.yaml
+
+Name: Definitions\GlobalSubstitutionTypesServiceTemplate.yaml
+
+Name: Artifacts\install.sh
+
+Name: Artifacts\create_stack.sh
+
+Name: Licenses\license.xml
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/MainServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..041afba
--- /dev/null
@@ -0,0 +1,551 @@
+imports: 
+- openovnf__tosca.nodes.nfv.VNF.vPCRF.yaml
+- openonfv__tosca.capabilities.Scalable.yaml
+- openonfv__tosca.capabilities.nfv.Metric.yaml
+- openonfv__tosca.nodes.nfv.VnfVirtualLinkDesc.yaml
+- openonfv__tosca.capabilities.network.Bindable.yaml
+- openonfv__tosca.capabilities.Attachment.yaml
+- openonfv__tosca.capabilities.nfv.VirtualBindable.yaml
+- openonfv__tosca.capabilities.nfv.VirtualLinkable.yaml
+- openonfv__tosca.requirements.nfv.VirtualStorage.yaml
+- openonfv__tosca.nodes.nfv.VDU.VirtualStorage.yaml
+- openonfv__tosca.relationships.nfv.VirtualBindsTo.yaml
+- openonfv__tosca.nodes.nfv.VDU.Compute.yaml
+- openonfv__tosca.relationships.nfv.VirtualLinksTo.yaml
+- openonfv__tosca.capabilities.nfv.VirtualCompute.yaml
+- openonfv__tosca.capabilities.Container.yaml
+- openonfv__tosca.capabilities.nfv.VirtualStorage.yaml
+- openonfv__tosca.requirements.nfv.VirtualBinding.yaml
+- openonfv__tosca.capabilities.Endpoint.Admin.yaml
+- openonfv__tosca.capabilities.OperatingSystem.yaml
+- openonfv__tosca.nodes.nfv.VduCpd.yaml
+- openonfv__tosca.relationships.nfv.VDU.AttachedTo.yaml
+
+metadata:
+  vendor: Huawei
+  csarVersion: v1.0
+  csarProvider: Huawei
+  id: vPCRF_NF_HW
+  version: v1.0
+  csarType: NFAR
+  name: vPCRF
+  vnfdVersion: v1.0
+  vnfmType: hwvnfm
+
+node_types:
+  org.openecomp.resource.vfc.nodes.heat.nat_fw:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+
+topology_template:
+  node_templates:
+    PUPDU_Storage:
+      attributes:
+        tosca_name: PUPDU_Storage
+      properties:
+        id: PUPDU_Storage
+        size_of_storage: 200G
+        type_of_storage: volume
+      type: tosca.nodes.nfv.VDU.VirtualStorage
+    USRSU:
+      attributes:
+        tosca_name: USRSU
+      capabilities:
+        virtual_compute:
+          properties:
+            virtual_memory:
+              virtual_mem_size: 24G
+            requested_additional_capabilities: {}
+            virtual_cpu:
+              num_virtual_cpu: 4
+      properties:
+        configurable_properties:
+          test: {"additional_vnfc_configurable_properties":{"aaa":"1"}}
+        name: USRSU
+        descrption: the virtual machine of USRSU
+      requirements:
+      - virtual_storage:
+          capability: virtual_storage
+          node: USRSU_Storage
+      - local_storage:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VDU.Compute
+    USPID3_VduCpd_Fabric:
+      attributes:
+        tosca_name: USPID3_VduCpd_Fabric
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USPID3
+      - virtual_link:
+          capability: virtual_linkable
+          node: Fabric
+      type: tosca.nodes.nfv.VduCpd
+    PUPDU_VduCpd_Base:
+      attributes:
+        tosca_name: PUPDU_VduCpd_Base
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: PUPDU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Base
+      type: tosca.nodes.nfv.VduCpd
+    OMU_VduCpd_Fabric:
+      attributes:
+        tosca_name: OMU_VduCpd_Fabric
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: OMU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Fabric
+      type: tosca.nodes.nfv.VduCpd
+    USPID3:
+      attributes:
+        tosca_name: USPID3
+      capabilities:
+        virtual_compute:
+          properties:
+            virtual_memory:
+              virtual_mem_size: 24G
+            requested_additional_capabilities: {}
+            virtual_cpu:
+              num_virtual_cpu: 4
+      properties:
+        configurable_properties:
+          test: {"additional_vnfc_configurable_properties":{"aaa":"1"}}
+        name: USPID3
+        descrption: the virtual machine of USPID3
+      requirements:
+      - virtual_storage:
+          capability: virtual_storage
+          node: USPID3_Storage
+      - local_storage:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VDU.Compute
+    UPIRU_VduCpd_Base:
+      attributes:
+        tosca_name: UPIRU_VduCpd_Base
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPIRU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Base
+      type: tosca.nodes.nfv.VduCpd
+    OMU2ManageNet:
+      attributes:
+        tosca_name: OMU2ManageNet
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          node: tosca.nodes.Root
+      - virtual_link:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VduCpd
+    OMU_Storage:
+      attributes:
+        tosca_name: OMU_Storage
+      properties:
+        id: OMU_Storage
+        size_of_storage: 256G
+        rdma_enabled: false
+        type_of_storage: volume
+      type: tosca.nodes.nfv.VDU.VirtualStorage
+    UPSPU:
+      attributes:
+        tosca_name: UPSPU
+      capabilities:
+        virtual_compute:
+          properties:
+            virtual_memory:
+              virtual_mem_size: 24G
+            requested_additional_capabilities: {}
+            virtual_cpu:
+              num_virtual_cpu: 4
+      properties:
+        configurable_properties:
+          test: {"additional_vnfc_configurable_properties":{"aaa":"1"}}
+        name: UPSPU
+        descrption: the virtual machine of UPSPU
+      requirements:
+      - virtual_storage:
+          capability: virtual_storage
+          node: UPSPU_Storage
+      - local_storage:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VDU.Compute
+    PUPDU_VduCpd_Fabric:
+      attributes:
+        tosca_name: PUPDU_VduCpd_Fabric
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: PUPDU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Fabric
+      type: tosca.nodes.nfv.VduCpd
+    USPID2BossNet:
+      attributes:
+        tosca_name: USPID2BossNet
+      properties:
+        role: root
+        layer_protocol: ethernet
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USPID3
+      - virtual_link:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VduCpd
+    OMU_VduCpd_Base:
+      attributes:
+        tosca_name: OMU_VduCpd_Base
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: OMU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Base
+      type: tosca.nodes.nfv.VduCpd
+    USPID3_Storage:
+      attributes:
+        tosca_name: USPID3_Storage
+      properties:
+        id: USPID3_Storage
+        size_of_storage: 300G
+        type_of_storage: volume
+      type: tosca.nodes.nfv.VDU.VirtualStorage
+    UPIRU2DataNet2:
+      attributes:
+        tosca_name: UPIRU2DataNet2
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPIRU
+      - virtual_link:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VduCpd
+    USPID2ManageNet:
+      attributes:
+        tosca_name: USPID2ManageNet
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USPID3
+      - virtual_link:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VduCpd
+    UPIRU2DataNet3:
+      attributes:
+        tosca_name: UPIRU2DataNet3
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPIRU
+      - virtual_link:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VduCpd
+    PUPDU2DataNet3:
+      attributes:
+        tosca_name: PUPDU2DataNet3
+      properties:
+        role: root
+        layer_protocol: ethernet
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: PUPDU
+      - virtual_link:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VduCpd
+    USRSU2DataNet1:
+      attributes:
+        tosca_name: USRSU2DataNet1
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USRSU
+      - virtual_link:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VduCpd
+    USRSU2DataNet2:
+      attributes:
+        tosca_name: USRSU2DataNet2
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USRSU
+      - virtual_link:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VduCpd
+    UPIRU_Storage:
+      attributes:
+        tosca_name: UPIRU_Storage
+      properties:
+        id: UPIRU_Storage
+        size_of_storage: 4G
+        type_of_storage: volume
+      type: tosca.nodes.nfv.VDU.VirtualStorage
+    PUPDU2SignalNet1:
+      attributes:
+        tosca_name: PUPDU2SignalNet1
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: PUPDU
+      - virtual_link:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VduCpd
+    UPIRU2DataNet1:
+      attributes:
+        tosca_name: UPIRU2DataNet1
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPIRU
+      - virtual_link:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VduCpd
+    USPID3_VduCpd_Base:
+      attributes:
+        tosca_name: USPID3_VduCpd_Base
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USPID3
+      - virtual_link:
+          capability: virtual_linkable
+          node: Base
+      type: tosca.nodes.nfv.VduCpd
+    Base:
+      attributes:
+        tosca_name: Base
+      properties:
+        vl_flavours:
+          flavours: test2
+        connectivity_type:
+          layer_protocol: ipv4
+          flow_pattern:
+      type: tosca.nodes.nfv.VnfVirtualLinkDesc
+    USRSU_Storage:
+      attributes:
+        tosca_name: USRSU_Storage
+      properties:
+        id: USRSU_Storage
+        size_of_storage: 200G
+        type_of_storage: volume
+      type: tosca.nodes.nfv.VDU.VirtualStorage
+    UPSPU_VduCpd_Base:
+      attributes:
+        tosca_name: UPSPU_VduCpd_Base
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPSPU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Base
+      type: tosca.nodes.nfv.VduCpd
+    PUPDU:
+      attributes:
+        tosca_name: PUPDU
+      capabilities:
+        virtual_compute:
+          properties:
+            virtual_memory:
+              virtual_mem_size: 24G
+            requested_additional_capabilities: {}
+            virtual_cpu:
+              num_virtual_cpu: 4
+      properties:
+        configurable_properties:
+          test: {"additional_vnfc_configurable_properties":{"aaa":"1"}}
+        name: PUPDU
+        descrption: the virtual machine of PUPDU
+      requirements:
+      - virtual_storage:
+          capability: virtual_storage
+          node: PUPDU_Storage
+      - local_storage:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VDU.Compute
+    USRSU_VduCpd_Base:
+      attributes:
+        tosca_name: USRSU_VduCpd_Base
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USRSU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Base
+      type: tosca.nodes.nfv.VduCpd
+    OMU:
+      attributes:
+        tosca_name: OMU
+      capabilities:
+        virtual_compute:
+          properties:
+            virtual_memory:
+              virtual_mem_size: 16G
+            requested_additional_capabilities: {}
+            virtual_cpu:
+              num_virtual_cpu: 4
+      properties:
+        configurable_properties:
+          test: {"additional_vnfc_configurable_properties":{"aaa":"1"}}
+        name: OMU
+        descrption: the virtual machine of OMU
+      requirements:
+      - virtual_storage:
+          capability: virtual_storage
+          node: OMU_Storage
+      - local_storage:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VDU.Compute
+    UPIRU_VduCpd_Fabric:
+      attributes:
+        tosca_name: UPIRU_VduCpd_Fabric
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPIRU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Fabric
+      type: tosca.nodes.nfv.VduCpd
+    UPSPU_Storage:
+      attributes:
+        tosca_name: UPSPU_Storage
+      properties:
+        id: UPSPU_Storage
+        size_of_storage: 4G
+        type_of_storage: volume
+      type: tosca.nodes.nfv.VDU.VirtualStorage
+    PUPDU2ManageNet:
+      attributes:
+        tosca_name: PUPDU2ManageNet
+      properties:
+        role: root
+        layer_protocol: ethernet
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: PUPDU
+      - virtual_link:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VduCpd
+    USRSU_VduCpd_Fabric:
+      attributes:
+        tosca_name: USRSU_VduCpd_Fabric
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USRSU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Fabric
+      type: tosca.nodes.nfv.VduCpd
+    UPIRU2SignalNet1:
+      attributes:
+        tosca_name: UPIRU2SignalNet1
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPIRU
+      - virtual_link:
+          node: tosca.nodes.Root
+      type: tosca.nodes.nfv.VduCpd
+    Fabric:
+      attributes:
+        tosca_name: Fabric
+      properties:
+        vl_flavours:
+          flavours: test1
+        connectivity_type:
+          layer_protocol: ipv4
+          flow_pattern:
+      type: tosca.nodes.nfv.VnfVirtualLinkDesc
+    UPSPU_VduCpd_Fabric:
+      attributes:
+        tosca_name: UPSPU_VduCpd_Fabric
+      properties:
+        role: root
+        layer_protocol: ipv4
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPSPU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Fabric
+      type: tosca.nodes.nfv.VduCpd
+
+  substitution_mappings:
+    node_type: tosca.nodes.nfv.VNF.vPCRF
+tosca_definitions_version: tosca_simple_yaml_1_0
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/TOSCA-Metadata/TOSCA.meta b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/TOSCA-Metadata/TOSCA.meta
new file mode 100644 (file)
index 0000000..69f62ca
--- /dev/null
@@ -0,0 +1,135 @@
+TOSCA-Meta-Version: 1.0
+CSAR-Version: 1.0
+Created-By: Winery 0.1.37-SNAPSHOT
+Entry-Definitions: Definitions/openovnf__vPCRF.yaml
+
+Name: Definitions/openovnf__vPCRF.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openovnf__tosca.nodes.nfv.VNF.vPCRF.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.capabilities.Scalable.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.capabilities.nfv.Metric.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.nodes.nfv.VnfVirtualLinkDesc.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.capabilities.network.Bindable.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.capabilities.Attachment.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.capabilities.nfv.VirtualBindable.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.capabilities.nfv.VirtualLinkable.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.requirements.nfv.VirtualStorage.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.nodes.nfv.VDU.VirtualStorage.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.relationships.nfv.VirtualBindsTo.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.nodes.nfv.VDU.Compute.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.relationships.nfv.VirtualLinksTo.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.capabilities.nfv.VirtualCompute.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.capabilities.Container.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.capabilities.nfv.VirtualStorage.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.requirements.nfv.VirtualBinding.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.capabilities.Endpoint.Admin.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.capabilities.OperatingSystem.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.nodes.nfv.VduCpd.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.relationships.nfv.VDU.AttachedTo.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openonfv__tosca.requirements.nfv.VirtualLink.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: Definitions/openovnf__tosca.nodes.nfv.VNF.yaml
+Content-Type: application/vnd.oasis.tosca.definitions
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VDU.VirtualStorage/propertiesdefinition/Properties.xsd
+Content-Type: text/xml
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VnfVirtualLinkDesc/appearance/bigIcon.png
+Content-Type: image/png
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VnfVirtualLinkDesc/appearance/smallIcon.png
+Content-Type: image/png
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VDU.Compute/propertiesdefinition/Properties.xsd
+Content-Type: text/xml
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VduCpd/propertiesdefinition/Properties.xsd
+Content-Type: text/xml
+
+Name: capabilitytypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.capabilities.nfv.VirtualCompute/propertiesdefinition/Properties.xsd
+Content-Type: text/xml
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv%2Fvnf/tosca.nodes.nfv.VNF/propertiesdefinition/Properties.xsd
+Content-Type: text/xml
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VDU.VirtualStorage/appearance/bigIcon.png
+Content-Type: image/png
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VDU.VirtualStorage/appearance/smallIcon.png
+Content-Type: image/png
+
+Name: capabilitytypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.capabilities.Container/propertiesdefinition/Properties.xsd
+Content-Type: text/xml
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VDU.Compute/appearance/bigIcon.png
+Content-Type: image/png
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VDU.Compute/appearance/smallIcon.png
+Content-Type: image/png
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv%2Fvnf/tosca.nodes.nfv.VNF.vPCRF/propertiesdefinition/Properties.xsd
+Content-Type: text/xml
+
+Name: capabilitytypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.capabilities.OperatingSystem/propertiesdefinition/Properties.xsd
+Content-Type: text/xml
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VnfVirtualLinkDesc/propertiesdefinition/Properties.xsd
+Content-Type: text/xml
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VduCpd/appearance/bigIcon.png
+Content-Type: image/png
+
+Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VduCpd/appearance/smallIcon.png
+Content-Type: image/png
+
+Name: capabilitytypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.capabilities.Scalable/propertiesdefinition/Properties.xsd
+Content-Type: text/xml
+
+Name: relationshiptypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.relationships.nfv.VDU.AttachedTo/propertiesdefinition/Properties.xsd
+Content-Type: text/xml
+
+
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/out/MainServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..77bfcac
--- /dev/null
@@ -0,0 +1,546 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  vnfdVersion: v1.0
+  template_name: Main
+  vendor: Huawei
+  csarVersion: v1.0
+  vnfmType: hwvnfm
+  csarProvider: Huawei
+  name: vPCRF
+  id: vPCRF_NF_HW
+  version: v1.0
+  csarType: NFAR
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+  org.openecomp.resource.vfc.nodes.heat.nat_fw:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+  node_templates:
+    PUPDU_Storage:
+      type: tosca.nodes.nfv.VDU.VirtualStorage
+      properties:
+        id: PUPDU_Storage
+        size_of_storage: 200G
+        type_of_storage: volume
+      attributes:
+        tosca_name: PUPDU_Storage
+    USRSU:
+      type: tosca.nodes.nfv.VDU.Compute
+      properties:
+        configurable_properties:
+          test:
+            additional_vnfc_configurable_properties:
+              aaa: '1'
+        name: USRSU
+        descrption: the virtual machine of USRSU
+      attributes:
+        tosca_name: USRSU
+      requirements:
+      - virtual_storage:
+          capability: virtual_storage
+          node: USRSU_Storage
+      - local_storage:
+          node: tosca.nodes.Root
+      capabilities:
+      - virtual_compute:
+          properties:
+            virtual_memory:
+              virtual_mem_size: 24G
+            requested_additional_capabilities: {
+              }
+            virtual_cpu:
+              num_virtual_cpu: 4.0
+    USPID3_VduCpd_Fabric:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: USPID3_VduCpd_Fabric
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USPID3
+      - virtual_link:
+          capability: virtual_linkable
+          node: Fabric
+    PUPDU_VduCpd_Base:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: PUPDU_VduCpd_Base
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: PUPDU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Base
+    OMU_VduCpd_Fabric:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: OMU_VduCpd_Fabric
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: OMU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Fabric
+    USPID3:
+      type: tosca.nodes.nfv.VDU.Compute
+      properties:
+        configurable_properties:
+          test:
+            additional_vnfc_configurable_properties:
+              aaa: '1'
+        name: USPID3
+        descrption: the virtual machine of USPID3
+      attributes:
+        tosca_name: USPID3
+      requirements:
+      - virtual_storage:
+          capability: virtual_storage
+          node: USPID3_Storage
+      - local_storage:
+          node: tosca.nodes.Root
+      capabilities:
+      - virtual_compute:
+          properties:
+            virtual_memory:
+              virtual_mem_size: 24G
+            requested_additional_capabilities: {
+              }
+            virtual_cpu:
+              num_virtual_cpu: 4.0
+    UPIRU_VduCpd_Base:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: UPIRU_VduCpd_Base
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPIRU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Base
+    OMU2ManageNet:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: OMU2ManageNet
+      requirements:
+      - virtual_binding:
+          node: tosca.nodes.Root
+      - virtual_link:
+          node: tosca.nodes.Root
+    OMU_Storage:
+      type: tosca.nodes.nfv.VDU.VirtualStorage
+      properties:
+        id: OMU_Storage
+        size_of_storage: 256G
+        rdma_enabled: false
+        type_of_storage: volume
+      attributes:
+        tosca_name: OMU_Storage
+    UPSPU:
+      type: tosca.nodes.nfv.VDU.Compute
+      properties:
+        configurable_properties:
+          test:
+            additional_vnfc_configurable_properties:
+              aaa: '1'
+        name: UPSPU
+        descrption: the virtual machine of UPSPU
+      attributes:
+        tosca_name: UPSPU
+      requirements:
+      - virtual_storage:
+          capability: virtual_storage
+          node: UPSPU_Storage
+      - local_storage:
+          node: tosca.nodes.Root
+      capabilities:
+      - virtual_compute:
+          properties:
+            virtual_memory:
+              virtual_mem_size: 24G
+            requested_additional_capabilities: {
+              }
+            virtual_cpu:
+              num_virtual_cpu: 4.0
+    PUPDU_VduCpd_Fabric:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: PUPDU_VduCpd_Fabric
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: PUPDU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Fabric
+    USPID2BossNet:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ethernet
+      attributes:
+        tosca_name: USPID2BossNet
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USPID3
+      - virtual_link:
+          node: tosca.nodes.Root
+    OMU_VduCpd_Base:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: OMU_VduCpd_Base
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: OMU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Base
+    USPID3_Storage:
+      type: tosca.nodes.nfv.VDU.VirtualStorage
+      properties:
+        id: USPID3_Storage
+        size_of_storage: 300G
+        type_of_storage: volume
+      attributes:
+        tosca_name: USPID3_Storage
+    UPIRU2DataNet2:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: UPIRU2DataNet2
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPIRU
+      - virtual_link:
+          node: tosca.nodes.Root
+    USPID2ManageNet:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: USPID2ManageNet
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USPID3
+      - virtual_link:
+          node: tosca.nodes.Root
+    UPIRU2DataNet3:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: UPIRU2DataNet3
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPIRU
+      - virtual_link:
+          node: tosca.nodes.Root
+    PUPDU2DataNet3:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ethernet
+      attributes:
+        tosca_name: PUPDU2DataNet3
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: PUPDU
+      - virtual_link:
+          node: tosca.nodes.Root
+    USRSU2DataNet1:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: USRSU2DataNet1
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USRSU
+      - virtual_link:
+          node: tosca.nodes.Root
+    USRSU2DataNet2:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: USRSU2DataNet2
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USRSU
+      - virtual_link:
+          node: tosca.nodes.Root
+    UPIRU_Storage:
+      type: tosca.nodes.nfv.VDU.VirtualStorage
+      properties:
+        id: UPIRU_Storage
+        size_of_storage: 4G
+        type_of_storage: volume
+      attributes:
+        tosca_name: UPIRU_Storage
+    PUPDU2SignalNet1:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: PUPDU2SignalNet1
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: PUPDU
+      - virtual_link:
+          node: tosca.nodes.Root
+    UPIRU2DataNet1:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: UPIRU2DataNet1
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPIRU
+      - virtual_link:
+          node: tosca.nodes.Root
+    USPID3_VduCpd_Base:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: USPID3_VduCpd_Base
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USPID3
+      - virtual_link:
+          capability: virtual_linkable
+          node: Base
+    Base:
+      type: tosca.nodes.nfv.VnfVirtualLinkDesc
+      properties:
+        vl_flavours:
+          flavours: test2
+        connectivity_type:
+          layer_protocol: ipv4
+          flow_pattern: null
+      attributes:
+        tosca_name: Base
+    USRSU_Storage:
+      type: tosca.nodes.nfv.VDU.VirtualStorage
+      properties:
+        id: USRSU_Storage
+        size_of_storage: 200G
+        type_of_storage: volume
+      attributes:
+        tosca_name: USRSU_Storage
+    UPSPU_VduCpd_Base:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: UPSPU_VduCpd_Base
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPSPU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Base
+    PUPDU:
+      type: tosca.nodes.nfv.VDU.Compute
+      properties:
+        configurable_properties:
+          test:
+            additional_vnfc_configurable_properties:
+              aaa: '1'
+        name: PUPDU
+        descrption: the virtual machine of PUPDU
+      attributes:
+        tosca_name: PUPDU
+      requirements:
+      - virtual_storage:
+          capability: virtual_storage
+          node: PUPDU_Storage
+      - local_storage:
+          node: tosca.nodes.Root
+      capabilities:
+      - virtual_compute:
+          properties:
+            virtual_memory:
+              virtual_mem_size: 24G
+            requested_additional_capabilities: {
+              }
+            virtual_cpu:
+              num_virtual_cpu: 4.0
+    USRSU_VduCpd_Base:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: USRSU_VduCpd_Base
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USRSU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Base
+    OMU:
+      type: tosca.nodes.nfv.VDU.Compute
+      properties:
+        configurable_properties:
+          test:
+            additional_vnfc_configurable_properties:
+              aaa: '1'
+        name: OMU
+        descrption: the virtual machine of OMU
+      attributes:
+        tosca_name: OMU
+      requirements:
+      - virtual_storage:
+          capability: virtual_storage
+          node: OMU_Storage
+      - local_storage:
+          node: tosca.nodes.Root
+      capabilities:
+      - virtual_compute:
+          properties:
+            virtual_memory:
+              virtual_mem_size: 16G
+            requested_additional_capabilities: {
+              }
+            virtual_cpu:
+              num_virtual_cpu: 4.0
+    UPIRU_VduCpd_Fabric:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: UPIRU_VduCpd_Fabric
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPIRU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Fabric
+    UPSPU_Storage:
+      type: tosca.nodes.nfv.VDU.VirtualStorage
+      properties:
+        id: UPSPU_Storage
+        size_of_storage: 4G
+        type_of_storage: volume
+      attributes:
+        tosca_name: UPSPU_Storage
+    PUPDU2ManageNet:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ethernet
+      attributes:
+        tosca_name: PUPDU2ManageNet
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: PUPDU
+      - virtual_link:
+          node: tosca.nodes.Root
+    USRSU_VduCpd_Fabric:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: USRSU_VduCpd_Fabric
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: USRSU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Fabric
+    UPIRU2SignalNet1:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: UPIRU2SignalNet1
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPIRU
+      - virtual_link:
+          node: tosca.nodes.Root
+    Fabric:
+      type: tosca.nodes.nfv.VnfVirtualLinkDesc
+      properties:
+        vl_flavours:
+          flavours: test1
+        connectivity_type:
+          layer_protocol: ipv4
+          flow_pattern: null
+      attributes:
+        tosca_name: Fabric
+    UPSPU_VduCpd_Fabric:
+      type: tosca.nodes.nfv.VduCpd
+      properties:
+        role: root
+        layer_protocol: ipv4
+      attributes:
+        tosca_name: UPSPU_VduCpd_Fabric
+      requirements:
+      - virtual_binding:
+          capability: virtual_binding
+          node: UPSPU
+      - virtual_link:
+          capability: virtual_linkable
+          node: Fabric
+  substitution_mappings:
+    node_type: tosca.nodes.nfv.VNF.vPCRF
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/pom.xml b/openecomp-be/lib/openecomp-tosca-converter-lib/pom.xml
new file mode 100644 (file)
index 0000000..e789e09
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.openecomp.sdc</groupId>
+        <artifactId>openecomp-sdc-lib</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>openecomp-tosca-converter-lib</artifactId>
+    <version>1.1.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>openecomp-tosca-converter-api</module>
+        <module>openecomp-tosca-converter-core</module>
+    </modules>
+
+    
+</project>
\ No newline at end of file
index 0fcaafa..722c286 100644 (file)
@@ -33,6 +33,7 @@ import java.util.Map;
  */
 public class ToscaServiceModel implements AsdcModel {
   private FileContentHandler artifactFiles;
+  private FileContentHandler externalFiles;
   private Map<String, ServiceTemplate> serviceTemplates;
   private String entryDefinitionServiceTemplate;
 
@@ -54,6 +55,15 @@ public class ToscaServiceModel implements AsdcModel {
     this.entryDefinitionServiceTemplate = entryDefinitionServiceTemplate;
   }
 
+  public ToscaServiceModel(FileContentHandler artifactFiles,
+                           FileContentHandler externalFiles,
+                           Map<String, ServiceTemplate> serviceTemplates,
+                           String entryDefinitionServiceTemplate) {
+    this.artifactFiles = artifactFiles;
+    this.externalFiles = externalFiles;
+    this.serviceTemplates = serviceTemplates;
+    this.entryDefinitionServiceTemplate = entryDefinitionServiceTemplate;
+  }
 
   /**
    * Gets artifact files.
@@ -113,4 +123,12 @@ public class ToscaServiceModel implements AsdcModel {
   public static ToscaServiceModel getClonedServiceModel(ToscaServiceModel toscaServiceModel) {
     return ToscaServiceModel.class.cast(DataModelUtil.getClonedObject(toscaServiceModel));
   }
+
+  public FileContentHandler getExternalFiles() {
+    return externalFiles;
+  }
+
+  public void setExternalFiles(FileContentHandler externalFiles) {
+    this.externalFiles = externalFiles;
+  }
 }
index dc2ed6c..45e6c3d 100644 (file)
@@ -492,7 +492,8 @@ public class ToscaAnalyzerServiceImpl implements ToscaAnalyzerService {
           toscaServiceModel.getServiceTemplates().get(fetchFileNameForImport(importFile,
               serviceTemplate.getMetadata() == null ? null
                   : serviceTemplate.getMetadata().get("filename")));
-      if (filesScanned.contains(ToscaUtil.getServiceTemplateFileName(template))) {
+      if (Objects.isNull(template) ||
+          filesScanned.contains(ToscaUtil.getServiceTemplateFileName(template))) {
         continue;
       } else {
         filesScanned.add(ToscaUtil.getServiceTemplateFileName(template));
index 5095578..df1b854 100644 (file)
@@ -31,5 +31,7 @@
         <module>openecomp-logging-lib</module>
         <module>openecomp-healing-lib</module>
         <module>openecomp-sdc-activity-log-lib</module>
+        <module>openecomp-tosca-converter-lib</module>
+        <module>openecomp-sdc-orchestration-lib</module>
     </modules>
 </project>
index 92d5bcc..6147ea8 100644 (file)
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+                <version>${jacoco.version}</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>prepare-agent</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>report</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>report</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
 
         </plugins>
     </build>
                 <artifactId>groovy-all</artifactId>
                 <version>${groovy.version}</version>
             </dependency>
-            <dependency>
+             <dependency>
                 <groupId>org.codehaus.janino</groupId>
                 <artifactId>janino</artifactId>
                 <version>${janino.version}</version>
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..42c347f 100644 (file)
@@ -1,14 +1,26 @@
 #!/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
-###########################################################################################################
+# script name - zusammenMainTool.sh
+# run script - ./zusammenMainTool.sh
+#  1.  Export all  - ./zusammenMainTool.sh -c EXPORT
+#  2.  Export one item  ./zusammenMainTool.sh -c EXPORT -i ${elementId}
+#  3.  Import one item - ./zusammenMainTool.sh -c  IMPORT -f ${fileName} -i ${elementId}
+#  4.  Import all - ./zusammenMainTool.sh -c  IMPORT -f  ${fileName}
+#  5.  Reset old version - ./zusammenMainTool.sh -c  RESET_OLD_VERSION
+#
+##########################################################################################################
+
+OSTYPE=`uname -a | grep -iq ubuntu; echo $?`
+echo "${OSTYPE}"
 
+if [ ${OSTYPE} -eq 0 ]
+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}"
index 82b5dea..0d22c47 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",
@@ -36,7 +35,7 @@
     "react-dom": "~15.3.2",
     "react-dropzone": "3.7.3",
     "react-redux": "^4.4.1",
-    "react-select": "^1.0.0-beta13",
+    "react-select": "1.0.0-rc.5",
     "react-sortable": "^1.2.0",
     "redux": "^3.3.1",
     "restful-js": "^0.7.0",
index 026f129..a53aee9 100644 (file)
@@ -1,5 +1,6 @@
-<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">
+<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">
     <modelVersion>4.0.0</modelVersion>
 
     <groupId>org.openecomp.sdc</groupId>
         <relativePath>../onboarding</relativePath>
     </parent>
 
+    <properties>
+        <maven.war.plugin.version>3.0.0</maven.war.plugin.version>
+    </properties>
+
     <build>
         <plugins>
-            <!-- ============================================= -->
-            <!-- Clean dist folder -->
-            <!-- ============================================= -->
             <plugin>
                 <artifactId>maven-clean-plugin</artifactId>
                 <version>2.6.1</version>
                                     <directory>${basedir}/node_modules</directory>
                                 </fileset>
                                 <fileset>
-                                    <directory>${basedir}/../dox-sequence-diagram-ui/dist</directory>
+                                    <directory>${basedir}/../dox-sequence-diagram-ui/dist
+                                    </directory>
                                 </fileset>
                                 <fileset>
-                                    <directory>${basedir}/../dox-sequence-diagram-ui/node_modules</directory>
+                                    <directory>${basedir}/../dox-sequence-diagram-ui/node_modules
+                                    </directory>
                                 </fileset>
                             </filesets>
                         </configuration>
@@ -58,8 +62,8 @@
                 <version>1.4</version>
 
                 <configuration>
-                               <installDirectory>${project.parent.parent.basedir}</installDirectory>
-                       </configuration>
+                    <installDirectory>${project.parent.parent.basedir}</installDirectory>
+                </configuration>
 
                 <executions>
 
                     </execution>
 
                     <execution>
-                       <id>npm set progress off</id>
-                       <goals>
-                               <goal>npm</goal>
-                       </goals>
-                       <configuration>
-                               <arguments>set progress=false</arguments>
-                       </configuration>
+                        <id>npm set progress off</id>
+                        <goals>
+                            <goal>npm</goal>
+                        </goals>
+                        <configuration>
+                            <arguments>set progress=false</arguments>
+                        </configuration>
                     </execution>
 
                     <execution>
                             <goal>npm</goal>
                         </goals>
                         <configuration>
-                            <workingDirectory>${project.basedir}/../dox-sequence-diagram-ui</workingDirectory>
+                            <workingDirectory>${project.basedir}/../dox-sequence-diagram-ui
+                            </workingDirectory>
                             <arguments>install</arguments>
                         </configuration>
                     </execution>
 
+                    <!-- Fix jQuery dependency in restful-js -->
+                    <execution>
+                        <id>npm restful-js</id>
+                        <goals>
+                            <goal>npm</goal>
+                        </goals>
+                        <configuration>
+                            <arguments>install restful-js</arguments>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>npm install restful-js dependencies</id>
+                        <goals>
+                            <goal>npm</goal>
+                        </goals>
+                        <configuration>
+                            <workingDirectory>${project.basedir}/node_modules/restful-js
+                            </workingDirectory>
+                            <arguments>install --production</arguments>
+                        </configuration>
+                    </execution>
+
                     <execution>
                         <id>npm install</id>
                         <goals>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-war-plugin</artifactId>
-                <version>3.0.0</version>
+                <version>${maven.war.plugin.version}</version>
                 <configuration>
                     <webResources>
                         <resource>
-                                <directory>${basedir}/target/dist</directory>
+                            <directory>${basedir}/target/dist</directory>
                         </resource>
                     </webResources>
                 </configuration>
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 9b0375d..28b54cc 100644 (file)
               color: $light-blue;
             }
           }
-          .software-product-landing-view-top-block-col-upl {
-            @extend .flex;
-            text-align: center;
-            flex-direction: column;
-            justify-content: center;
-            border: 2px dashed $light-gray;
-            margin-bottom: 20px;
-            @extend .body-1;
-            align-items: center;
-            .upload-btn {
-              padding: 15px 55px;
+        }
 
-            }
-            .drag-text {
-              color: $blue;
-              @extend .body-1-semibold;
-            }
-            .or-text {
-              margin-top: 10px;
-              margin-bottom: 10px;
-            }
+        .software-product-landing-view-top-block-col-upl {
+          @extend .flex;
+          height: 215px;
+          text-align: center;
+          flex-direction: column;
+          justify-content: center;
+          border: 2px dashed $light-gray;
+          margin-bottom: 20px;
+          @extend .body-1;
+          align-items: center;
+          .upload-btn {
+            padding: 15px 55px;
+
+          }
+          .drag-text {
+            color: $blue;
+            @extend .body-1-semibold;
+          }
+          .or-text {
+            margin-top: 10px;
+            margin-bottom: 10px;
           }
         }
       }
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;
index 24ba05e..fc65083 100644 (file)
@@ -31,11 +31,13 @@ import OnboardActionHelper from './onboard/OnboardActionHelper.js';
 import SoftwareProductComponentsMonitoringAction from './softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js';
 import {actionTypes, enums} from './OnboardingConstants.js';
 import SoftwareProductComponentsImageActionHelper from './softwareProduct/components/images/SoftwareProductComponentsImageActionHelper.js';
-import {navigationItems as SoftwareProductNavigationItems, actionTypes as SoftwareProductActionTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js';
+import {navigationItems as SoftwareProductNavigationItems, actionTypes as SoftwareProductActionTypes, onboardingOriginTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js';
 import ActivityLogActionHelper from 'sdc-app/common/activity-log/ActivityLogActionHelper.js';
 import licenseModelOverviewActionHelper from 'sdc-app/onboarding/licenseModel/overview/licenseModelOverviewActionHelper.js';
 import store from 'sdc-app/AppStore.js';
 import {selectedButton as licenseModelOverviewSelectedButton} from 'sdc-app/onboarding/licenseModel/overview/LicenseModelOverviewConstants.js';
+import {tabsMapping as attachmentsTabsMapping} from 'sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js';
+import SoftwareProductAttachmentsActionHelper from 'sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js';
 
 function setCurrentScreen(dispatch, screen, props = {}) {
        dispatch({
@@ -165,7 +167,9 @@ export default {
                        SoftwareProductActionHelper.loadSoftwareProductDetailsData(dispatch, {licenseModelId, licensingVersion});
 
                        SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(dispatch, {softwareProductId, version: newVersion});
-                       SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(dispatch, {softwareProductId, version: newVersion});
+                       if(response[0].onboardingOrigin === onboardingOriginTypes.ZIP) {
+                               SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(dispatch, {softwareProductId, version: newVersion});
+                       }
                        setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE, {softwareProductId, licenseModelId, version: newVersion});
                });
        },
@@ -175,11 +179,19 @@ export default {
                setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_DETAILS, {softwareProductId, version});
        },
 
-       navigateToSoftwareProductAttachments(dispatch, {softwareProductId, version}) {
+       navigateToSoftwareProductAttachmentsSetupTab(dispatch, {softwareProductId, version}) {
                SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(dispatch, {softwareProductId, version});
+               SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {activeTab: attachmentsTabsMapping.SETUP});
                setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS, {softwareProductId, version});
        },
 
+       navigateToSoftwareProductAttachmentsValidationTab(dispatch, {softwareProductId, version}) {
+               SoftwareProductActionHelper.processAndValidateHeatCandidate(dispatch, {softwareProductId, version}).then(() => {
+                       SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {activeTab: attachmentsTabsMapping.VALIDATION});
+                       setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS, {softwareProductId, version});
+               });
+       },
+
        navigateToSoftwareProductProcesses(dispatch, {softwareProductId, version}) {
                if (softwareProductId) {
                        SoftwareProductProcessesActionHelper.fetchProcessesList(dispatch, {softwareProductId, version});
index aea5fc6..c1f3251 100644 (file)
@@ -28,7 +28,6 @@ import Onboard from './onboard/Onboard.js';
 import LicenseModel from './licenseModel/LicenseModel.js';
 import LicenseModelOverview from './licenseModel/overview/LicenseModelOverview.js';
 import ActivityLog from 'sdc-app/common/activity-log/ActivityLog.js';
-import {doesHeatDataExist} from './softwareProduct/attachments/SoftwareProductAttachmentsUtils.js';
 
 import LicenseAgreementListEditor from './licenseModel/licenseAgreement/LicenseAgreementListEditor.js';
 import FeatureGroupListEditor from './licenseModel/featureGroups/FeatureGroupListEditor.js';
@@ -55,7 +54,8 @@ import SoftwareProductComponentsMonitoring from './softwareProduct/components/mo
 import {
        navigationItems as SoftwareProductNavigationItems,
        onboardingMethod as onboardingMethodTypes,
-       actionTypes as SoftwareProductActionTypes
+       actionTypes as SoftwareProductActionTypes,
+       onboardingOriginTypes
 } from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js';
 
 import {statusEnum as VCItemStatus} from 'nfvo-components/panel/versionController/VersionControllerConstants.js';
@@ -314,7 +314,12 @@ export default class OnboardingPunchOut {
                                                        OnboardingActionHelper.navigateToSoftwareProductDetails(dispatch, {softwareProductId, version: currentSoftwareProductVersion});
                                                        break;
                                                case enums.BREADCRUMS.SOFTWARE_PRODUCT_ATTACHMENTS:
-                                                       OnboardingActionHelper.navigateToSoftwareProductAttachments(dispatch, {softwareProductId, version: currentSoftwareProductVersion});
+                                                       if(softwareProduct.onboardingOrigin === onboardingOriginTypes.ZIP) {
+                                                               OnboardingActionHelper.navigateToSoftwareProductAttachmentsSetupTab(dispatch, {softwareProductId, version: currentSoftwareProductVersion});
+                                                       }
+                                                       else if(softwareProduct.onboardingOrigin === onboardingOriginTypes.CSAR) {
+                                                               OnboardingActionHelper.navigateToSoftwareProductAttachmentsValidationTab(dispatch, {softwareProductId, version: currentSoftwareProductVersion});
+                                                       }
                                                        break;
                                                case enums.BREADCRUMS.SOFTWARE_PRODUCT_PROCESSES:
                                                        OnboardingActionHelper.navigateToSoftwareProductProcesses(dispatch, {softwareProductId, version: currentSoftwareProductVersion});
@@ -415,9 +420,9 @@ export default class OnboardingPunchOut {
        handleStoreChange() {
                let {currentScreen, licenseModelList, softwareProductList,
                        softwareProduct: {softwareProductEditor: {data = {onboardingMethod: ''}},
-                               softwareProductComponents: {componentsList}, softwareProductAttachments: {heatSetup}}} = store.getState();
-               let {onboardingMethod} = data;
-               let breadcrumbsData = {onboardingMethod, currentScreen, licenseModelList, softwareProductList, componentsList, heatSetup};
+                               softwareProductComponents: {componentsList}}} = store.getState();
+               let {onboardingMethod, onboardingOrigin} = data;
+               let breadcrumbsData = {onboardingMethod, currentScreen, licenseModelList, softwareProductList, componentsList, onboardingOrigin};
                if (currentScreen.forceBreadCrumbsUpdate || !isEqual(breadcrumbsData, this.prevBreadcrumbsData) || this.breadcrumbsPrefixSelected) {
                        this.prevBreadcrumbsData = breadcrumbsData;
                        this.breadcrumbsPrefixSelected = false;
@@ -434,7 +439,7 @@ export default class OnboardingPunchOut {
                }
        }
 
-       buildBreadcrumbs({currentScreen: {screen, props}, onboardingMethod, licenseModelList, softwareProductList, componentsList, heatSetup}) {
+       buildBreadcrumbs({currentScreen: {screen, props}, onboardingMethod, licenseModelList, softwareProductList, componentsList, onboardingOrigin}) {
                let screenToBreadcrumb;
                switch (screen) {
                        case enums.SCREEN.ONBOARDING_CATALOG:
@@ -593,7 +598,7 @@ export default class OnboardingPunchOut {
                                                        key: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENTS,
                                                        displayText: i18n('Components')
                                                }].filter(item => {
-                                                       let isHeatData = doesHeatDataExist(heatSetup);
+                                                       let isHeatData = onboardingOrigin !== onboardingOriginTypes.NONE;
                                                        let isManualMode = onboardingMethod === onboardingMethodTypes.MANUAL;
                                                        switch (item.key) {
                                                                case enums.BREADCRUMS.SOFTWARE_PRODUCT_ATTACHMENTS:
index c9c95f3..6426847 100644 (file)
@@ -22,11 +22,10 @@ import TabulatedEditor from 'src/nfvo-components/editor/TabulatedEditor.jsx';
 import {enums} from 'sdc-app/onboarding/OnboardingConstants.js';
 import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js';
 
-import {navigationItems, mapScreenToNavigationItem, onboardingMethod as onboardingMethodTypes} from './SoftwareProductConstants.js';
+import {navigationItems, mapScreenToNavigationItem, onboardingMethod as onboardingMethodTypes, onboardingOriginTypes} from './SoftwareProductConstants.js';
 import SoftwareProductActionHelper from './SoftwareProductActionHelper.js';
 import SoftwareProductComponentsActionHelper from './components/SoftwareProductComponentsActionHelper.js';
 import SoftwareProductDependenciesActionHelper from './dependencies/SoftwareProductDependenciesActionHelper.js';
-import {doesHeatDataExist} from './attachments/SoftwareProductAttachmentsUtils.js';
 
 import HeatSetupActionHelper from './attachments/setup/HeatSetupActionHelper.js';
 import { actionsEnum as versionControllerActions } from 'nfvo-components/panel/versionController/VersionControllerConstants.js';
@@ -86,7 +85,7 @@ const buildComponentNavigationBarGroups = ({componentId, meta}) => {
 
 const buildNavigationBarProps = ({softwareProduct, meta, screen, componentId, componentsList, mapOfExpandedIds}) => {
        const {softwareProductEditor: {data: currentSoftwareProduct = {}}} = softwareProduct;
-       const {id, name, onboardingMethod} = currentSoftwareProduct;
+       const {id, name, onboardingMethod, onboardingOrigin} = currentSoftwareProduct;
        const groups = [{
                id: id,
                name: name,
@@ -122,7 +121,7 @@ const buildNavigationBarProps = ({softwareProduct, meta, screen, componentId, co
                                id: navigationItems.ATTACHMENTS,
                                name: i18n('Attachments'),
                                disabled: false,
-                               hidden: !doesHeatDataExist(meta.heatSetup),
+                               hidden: onboardingOrigin === onboardingOriginTypes.NONE,
                                meta
                        }, {
                                id: navigationItems.ACTIVITY_LOG,
@@ -175,7 +174,7 @@ const buildVersionControllerProps = (softwareProduct) => {
 function buildMeta({softwareProduct, componentId, softwareProductDependencies}) {
        const {softwareProductEditor, softwareProductComponents, softwareProductQuestionnaire, softwareProductAttachments} = softwareProduct;
        const {data: currentSoftwareProduct = {}} = softwareProductEditor;
-       const {version} = currentSoftwareProduct;
+       const {version, onboardingOrigin} = currentSoftwareProduct;
        const isReadOnlyMode = VersionControllerUtils.isReadOnly(currentSoftwareProduct);
        const {qdata} = softwareProductQuestionnaire;
        const {heatSetup, heatSetupCache} = softwareProductAttachments;
@@ -184,7 +183,7 @@ function buildMeta({softwareProduct, componentId, softwareProductDependencies})
                const {componentEditor: {data: componentData = {} , qdata: componentQdata}} = softwareProductComponents;
                currentComponentMeta = {componentData, componentQdata};
        }
-       const meta = {softwareProduct: currentSoftwareProduct, qdata, version, heatSetup, heatSetupCache, isReadOnlyMode, currentComponentMeta, softwareProductDependencies};
+       const meta = {softwareProduct: currentSoftwareProduct, qdata, version, onboardingOrigin, heatSetup, heatSetupCache, isReadOnlyMode, currentComponentMeta, softwareProductDependencies};
        return meta;
 }
 
@@ -280,7 +279,7 @@ const mapActionsToProps = (dispatch, {currentScreen: {screen, props: {softwarePr
                },
                onToggle: (groups, itemIdToExpand) => groups.map(({items}) => SoftwareProductActionHelper.toggleNavigationItems(dispatch, {items, itemIdToExpand})),
                onNavigate: ({id, meta, version}) => {
-                       let {heatSetup, heatSetupCache} = meta;
+                       let {onboardingOrigin, heatSetup, heatSetupCache} = meta;
                        let heatSetupPopupPromise = screen === enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS ?
                                                                HeatSetupActionHelper.heatSetupLeaveConfirmation(dispatch, {softwareProductId, heatSetup, heatSetupCache}) :
                                                                Promise.resolve();
@@ -307,7 +306,12 @@ const mapActionsToProps = (dispatch, {currentScreen: {screen, props: {softwarePr
                                                OnboardingActionHelper.navigateToSoftwareProductDependencies(dispatch, {softwareProductId, version});
                                                break;
                                        case navigationItems.ATTACHMENTS:
-                                               OnboardingActionHelper.navigateToSoftwareProductAttachments(dispatch, {softwareProductId, version});
+                                               if(onboardingOrigin === onboardingOriginTypes.ZIP) {
+                                                       OnboardingActionHelper.navigateToSoftwareProductAttachmentsSetupTab(dispatch, {softwareProductId, version});
+                                               }
+                                               else if(onboardingOrigin === onboardingOriginTypes.CSAR) {
+                                                       OnboardingActionHelper.navigateToSoftwareProductAttachmentsValidationTab(dispatch, {softwareProductId, version});
+                                               }
                                                break;
                                        case navigationItems.COMPONENTS:
                                                OnboardingActionHelper.navigateToSoftwareProductComponents(dispatch, {softwareProductId, version});
@@ -334,9 +338,7 @@ const mapActionsToProps = (dispatch, {currentScreen: {screen, props: {softwarePr
                case enums.SCREEN.SOFTWARE_PRODUCT_DEPLOYMENT:
                case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES:
                case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING:
-                       props.onSave = () => {
-                               return Promise.resolve();
-                       };
+                       props.onSave = () => Promise.resolve();
                        break;
                default:
                        props.onSave = ({softwareProduct, qdata}) => SoftwareProductActionHelper.updateSoftwareProduct(dispatch, {softwareProduct, qdata});
index d4bee0a..41306a1 100644 (file)
@@ -20,7 +20,7 @@ import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseMod
 import LicenseAgreementActionHelper from 'sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js';
 import FeatureGroupsActionHelper from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js';
 
-import {actionTypes} from './SoftwareProductConstants.js';
+import {actionTypes, onboardingOriginTypes, PRODUCT_QUESTIONNAIRE, forms} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js';
 import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js';
 import SoftwareProductComponentsActionHelper from './components/SoftwareProductComponentsActionHelper.js';
 import {actionsEnum as VersionControllerActionsEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js';
@@ -29,10 +29,10 @@ import {actionTypes as featureGroupsActionConstants} from 'sdc-app/onboarding/li
 import {actionTypes as licenseAgreementActionTypes} from 'sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConstants.js';
 import {actionTypes as componentActionTypes} from './components/SoftwareProductComponentsConstants.js';
 import ValidationHelper from 'sdc-app/common/helpers/ValidationHelper.js';
-import {PRODUCT_QUESTIONNAIRE} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js';
 import {actionTypes as modalActionTypes} from 'nfvo-components/modal/GlobalModalConstants.js';
 import {modalContentMapper} from 'sdc-app/common/modal/ModalContentMapper.js';
 import {statusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js';
+import {actionTypes as commonActionTypes} from 'sdc-app/common/reducers/PlainDataReducerConstants.js';
 
 function baseUrl() {
        const restPrefix = Configuration.get('restPrefix');
@@ -59,7 +59,9 @@ function putSoftwareProduct(softwareProduct) {
                licensingVersion: softwareProduct.licensingVersion && softwareProduct.licensingVersion.id ? softwareProduct.licensingVersion : {} ,
                icon: softwareProduct.icon,
                licensingData: softwareProduct.licensingData,
-               onboardingMethod: softwareProduct.onboardingMethod
+               onboardingMethod: softwareProduct.onboardingMethod,
+               networkPackageName: softwareProduct.networkPackageName,
+               onboardingOrigin: softwareProduct.onboardingOrigin
        });
 }
 
@@ -267,7 +269,19 @@ const SoftwareProductActionHelper = {
                        .then(() => uploadFile(softwareProductId, formData, version))
                        .then(response => {
                                if (response.status === 'Success') {
-                                       OnboardingActionHelper.navigateToSoftwareProductAttachments(dispatch, {softwareProductId, version});
+                                       dispatch({
+                                               type: commonActionTypes.DATA_CHANGED,
+                                               deltaData: {onboardingOrigin: response.onboardingOrigin},
+                                               formName: forms.VENDOR_SOFTWARE_PRODUCT_DETAILS
+                                       });
+                                       switch(response.onboardingOrigin){
+                                               case onboardingOriginTypes.ZIP:
+                                                       OnboardingActionHelper.navigateToSoftwareProductAttachmentsSetupTab(dispatch, {softwareProductId, version});
+                                                       break;
+                                               case onboardingOriginTypes.CSAR:
+                                                       OnboardingActionHelper.navigateToSoftwareProductAttachmentsValidationTab(dispatch, {softwareProductId, version});
+                                                       break;
+                                       }
                                }
                                else {
                                        throw new Error(parseUploadErrorMsg(response.errors));
index 0379ee5..2c094ac 100644 (file)
@@ -39,7 +39,7 @@ export const navigationItems = keyMirror({
        GENERAL: 'general',
        PROCESS_DETAILS: 'process-details',
        DEPLOYMENT_FLAVORS: 'deployment-flavor',
-       NETWORKS: 'networks',   
+       NETWORKS: 'networks',
        IMAGES: 'images',
        ATTACHMENTS: 'attachments',
        ACTIVITY_LOG: 'activity-log',
@@ -54,7 +54,13 @@ export const navigationItems = keyMirror({
 
 export const onboardingMethod = {
        MANUAL: 'Manual',
-       HEAT: 'HEAT'
+       NETWORK_PACKAGE: 'NetworkPackage'
+};
+
+export const onboardingOriginTypes = {
+       NONE: 'none',
+       ZIP: 'zip',
+       CSAR: 'csar'
 };
 
 export const forms = keyMirror({
index 977a76a..d7a6c2e 100644 (file)
@@ -15,6 +15,7 @@
  */
 import {combineReducers} from 'redux';
 import {actionTypes, PRODUCT_QUESTIONNAIRE} from './SoftwareProductConstants.js';
+import SoftwareProductAttachmentsReducer from './attachments/SoftwareProductAttachmentsReducer.js';
 import HeatValidationReducer from './attachments/validation/HeatValidationReducer.js';
 import HeatSetupReducer from './attachments/setup/HeatSetupReducer.js';
 import {actionTypes as heatSetupActionTypes} from './attachments/setup/HeatSetupConstants.js';
@@ -48,6 +49,7 @@ import {IMAGE_QUESTIONNAIRE} from 'sdc-app/onboarding/softwareProduct/components
 
 export default combineReducers({
        softwareProductAttachments: combineReducers({
+               attachmentsDetails: SoftwareProductAttachmentsReducer,
                heatValidation: HeatValidationReducer,
                heatSetup: HeatSetupReducer,
                heatSetupCache: (state = {}, action) => action.type === heatSetupActionTypes.FILL_HEAT_SETUP_CACHE ? action.payload : state
index 945de4f..f14c988 100644 (file)
@@ -23,6 +23,7 @@ import {errorLevels} from 'sdc-app/onboarding/softwareProduct/attachments/valida
 import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js';
 import HeatSetup from './setup/HeatSetup.js';
 import {doesHeatDataExist} from './SoftwareProductAttachmentsUtils.js';
+import SoftwareProductAttachmentsActionHelper from './SoftwareProductAttachmentsActionHelper.js';
 
 import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js';
 
@@ -30,7 +31,7 @@ export const mapStateToProps = (state) => {
        let {
                softwareProduct: {
                        softwareProductEditor:{data: currentSoftwareProduct = {}},
-                       softwareProductAttachments: {heatSetup, heatSetupCache, heatValidation : {errorList}}
+                       softwareProductAttachments: {attachmentsDetails: {activeTab}, heatSetup, heatSetupCache, heatValidation : {errorList}}
                }
        } = state;
 
@@ -47,7 +48,7 @@ export const mapStateToProps = (state) => {
 
        let isReadOnlyMode = currentSoftwareProduct && currentSoftwareProduct.version ?
                        VersionControllerUtils.isReadOnly(currentSoftwareProduct) : false;
-       let {version} = currentSoftwareProduct;
+       let {version, onboardingOrigin} = currentSoftwareProduct;
        return {
                isValidationAvailable: unassigned.length === 0 && modules.length > 0,
                heatSetup,
@@ -56,7 +57,9 @@ export const mapStateToProps = (state) => {
                goToOverview,
                HeatSetupComponent: HeatSetup,
                isReadOnlyMode,
-               version
+               version,
+               onboardingOrigin,
+               activeTab
        };
 };
 
@@ -83,7 +86,8 @@ export const mapActionsToProps = (dispatch, {softwareProductId}) => {
                onProcessAndValidate: ({heatData, heatDataCache, isReadOnlyMode, version}) => {
                        return HeatSetupActionHelper.processAndValidateHeat(dispatch,
                                {softwareProductId, heatData, heatDataCache, isReadOnlyMode, version});
-               }
+               },
+               setActiveTab: ({activeTab}) => SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {activeTab})
        };
 };
 
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js
new file mode 100644 (file)
index 0000000..ae4a615
--- /dev/null
@@ -0,0 +1,26 @@
+/*!
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+import {actionTypes} from './SoftwareProductAttachmentsConstants';
+
+export default {
+       setActiveTab(dispatch, {activeTab}) {
+               dispatch({
+                       type: actionTypes.SET_ACTIVE_TAB,
+                       activeTab
+               });
+       }
+};
index b0410d1..6726590 100644 (file)
  * or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
+import keyMirror from 'nfvo-utils/KeyMirror.js';
+
 export const tabsMapping = {
        SETUP: 1,
        VALIDATION: 2
 };
+
+export const actionTypes = keyMirror({
+       SET_ACTIVE_TAB: null
+});
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsReducer.js
new file mode 100644 (file)
index 0000000..5f6538a
--- /dev/null
@@ -0,0 +1,25 @@
+/*!
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+import {actionTypes} from './SoftwareProductAttachmentsConstants.js';
+
+export default (state = [], action) => {
+       switch (action.type) {
+               case actionTypes.SET_ACTIVE_TAB:
+                       return {activeTab: action.activeTab};
+               default:
+                       return state;
+       }
+};
index 3da26cc..8c59b2b 100644 (file)
@@ -20,34 +20,34 @@ import {tabsMapping} from './SoftwareProductAttachmentsConstants.js';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 import SVGIcon from 'sdc-ui/lib/react/SVGIcon.js';
 import HeatValidation from './validation/HeatValidation.js';
+import {onboardingOriginTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js';
 
 class HeatScreenView extends Component {
 
        static propTypes = {
                isValidationAvailable: PropTypes.bool,
-               goToOverview: PropTypes.bool
-       };
-
-       state = {
-               activeTab: tabsMapping.SETUP
+               goToOverview: PropTypes.bool,
+               setActiveTab: PropTypes.function
        };
 
        render() {
-               let {isValidationAvailable, isReadOnlyMode, heatDataExist, onDownload, softwareProductId, onProcessAndValidate, heatSetup, HeatSetupComponent, onGoToOverview, version, ...other} = this.props;
+               let {isValidationAvailable, isReadOnlyMode, heatDataExist, onDownload, softwareProductId, onProcessAndValidate,
+                       heatSetup, HeatSetupComponent, onGoToOverview, version, onboardingOrigin, activeTab, setActiveTab, ...other} = this.props;
+
                return (
                        <div className='vsp-attachments-view'>
                                <div className='attachments-view-controllers'>
-                                       {(this.state.activeTab === tabsMapping.SETUP) &&
+                                       {(activeTab === tabsMapping.SETUP) &&
                                                <SVGIcon
                                                        disabled={heatDataExist ? false : true}
                                                        name='download'
                                                        className='icon-component'
-                                                       label={i18n('Download HEAT')}
+                                                       label={i18n('Export Validation')}
                                                        labelPosition='right'
                                                        color='secondary'
                                                        onClick={heatDataExist ? () => onDownload({heatCandidate: heatSetup, isReadOnlyMode, version}) : undefined}
                                                        data-test-id='download-heat'/>}
-                                       {(this.state.activeTab === tabsMapping.VALIDATION && softwareProductId) &&
+                                       {(activeTab === tabsMapping.VALIDATION && softwareProductId) &&
                                                <SVGIcon
                                                        disabled={this.props.goToOverview !== true}
                                                        onClick={this.props.goToOverview ? () => onGoToOverview({version}) : undefined}
@@ -60,7 +60,7 @@ class HeatScreenView extends Component {
                                        <SVGIcon
                                                name='upload'
                                                className='icon-component'
-                                               label={i18n('Upload New HEAT')}
+                                               label={i18n('Upload New File')}
                                                labelPosition='right'
                                                color='secondary'
                                                disabled={isReadOnlyMode}
@@ -70,20 +70,20 @@ class HeatScreenView extends Component {
                                                ref='hiddenImportFileInput'
                                                type='file'
                                                name='fileInput'
-                                               accept='.zip'
+                                               accept='.zip, .csar'
                                                onChange={evt => this.handleImport(evt)}/>
                                </div>
-                               <Tabs id='attachments-tabs' activeKey={this.state.activeTab} onSelect={key => this.handleTabPress(key)}>
-                                       <Tab  eventKey={tabsMapping.SETUP} title='HEAT Setup'>
+                               <Tabs id='attachments-tabs' activeKey={activeTab} onSelect={key => this.handleTabPress(key)}>
+                                       <Tab eventKey={tabsMapping.SETUP} title='Setup' disabled={onboardingOrigin === onboardingOriginTypes.CSAR}>
                                                <HeatSetupComponent
                                                        heatDataExist={heatDataExist}
-                                                       changeAttachmentsTab={tab => this.setState({activeTab: tab})}
+                                                       changeAttachmentsTab={tab => setActiveTab({activeTab: tab})}
                                                        onProcessAndValidate={onProcessAndValidate}
                                                        softwareProductId={softwareProductId}
                                                        isReadOnlyMode={isReadOnlyMode}
                                                        version={version}/>
                                        </Tab>
-                                       <Tab eventKey={tabsMapping.VALIDATION} title='Heat Validation' disabled={!isValidationAvailable}>
+                                       <Tab eventKey={tabsMapping.VALIDATION} title='Validation' disabled={!isValidationAvailable}>
                                                <HeatValidation {...other}/>
                                        </Tab>
                                </Tabs>
@@ -92,15 +92,15 @@ class HeatScreenView extends Component {
        }
 
        handleTabPress(key) {
-               let {heatSetup, heatSetupCache, onProcessAndValidate, isReadOnlyMode, version} = this.props;
+               let {heatSetup, heatSetupCache, onProcessAndValidate, isReadOnlyMode, version, setActiveTab} = this.props;
                switch (key) {
                        case tabsMapping.VALIDATION:
                                onProcessAndValidate({heatData: heatSetup, heatDataCache: heatSetupCache, isReadOnlyMode, version}).then(
-                                       () => this.setState({activeTab: tabsMapping.VALIDATION})
+                                       () => setActiveTab({activeTab: tabsMapping.VALIDATION})
                                );
                                return;
                        case tabsMapping.SETUP:
-                               this.setState({activeTab: tabsMapping.SETUP});
+                               setActiveTab({activeTab: tabsMapping.SETUP});
                                return;
                }
        }
@@ -112,11 +112,13 @@ class HeatScreenView extends Component {
                formData.append('upload', this.refs.hiddenImportFileInput.files[0]);
                this.refs.hiddenImportFileInput.value = '';
                this.props.onUpload(formData, version);
-               this.setState({activeTab: tabsMapping.SETUP});
        }
 
        save() {
-               return this.props.onSave(this.props.heatSetup, this.props.version);
+
+               return this.props.onboardingOrigin === onboardingOriginTypes.ZIP ?
+                       this.props.onSave(this.props.heatSetup, this.props.version) :
+                       Promise.resolve();
        }
 
 }
index f0c10ed..1d11bdd 100644 (file)
@@ -89,16 +89,16 @@ function createErrorList(node, parent, deep = 0, errorList = []) {
        return errorList;
 }
 
-const mapValidationDataToTree = validationData => {
-       let {heat, volume, network, artifacts, other} = validationData.importStructure || {};
+const mapValidationDataToTree = (validationData, packageName) => {
+       let {heat, nested, volume, network, artifacts, other} = validationData.importStructure || {};
        return {
                children: [
                        {
-                               name: 'HEAT',
+                               name: packageName,
                                expanded: true,
                                type: 'heat',
                                header: true,
-                               children: (heat ? heat.map(mapHeatData) : [])
+                               children: (heat ? heat.map(mapHeatData) : nested ? nested.map(mapHeatData) : [])
                        },
                        ...(artifacts ? [{
                                name: 'artifacts',
@@ -165,7 +165,8 @@ export default (state = {attachmentsTree: {}}, action) => {
        switch (action.type) {
                case softwareProductsActionTypes.SOFTWARE_PRODUCT_LOADED:
                        let currentSoftwareProduct = action.response;
-                       let attachmentsTree = currentSoftwareProduct.validationData ? mapValidationDataToTree(currentSoftwareProduct.validationData) : {};
+                       const packageName = currentSoftwareProduct.networkPackageName;
+                       let attachmentsTree = currentSoftwareProduct.validationData ? mapValidationDataToTree(currentSoftwareProduct.validationData, packageName) : {};
                        let errorList = createErrorList(attachmentsTree);
                        return {
                                ...state,
index 2a2f4ac..80d74b2 100644 (file)
@@ -93,9 +93,9 @@ function HeatFileTreeHeader(props) {
                <div onClick={() => props.selectNode(nodeFilters.ALL)} className={classNames({'attachments-tree-header': true,
                        'header-selected' : props.selectedNode === nodeFilters.ALL})} data-test-id='validation-tree-header'>
                        <div className='tree-header-title' >
-                               <SVGIcon name='zip' color={props.selectedNode === nodeFilters.ALL ? 'primary' : ''}  iconClassName='header-icon' />
+                               {/*<SVGIcon name='zip' color={props.selectedNode === nodeFilters.ALL ? 'primary' : ''}  iconClassName='header-icon' />*/}
                                <span className={classNames({'tree-header-title-text' : true,
-                                       'tree-header-title-selected' : props.selectedNode === nodeFilters.ALL})}>{i18n(`HEAT${hasErrors ? ' (Draft)' : ''}`)}</span>
+                                       'tree-header-title-selected' : props.selectedNode === nodeFilters.ALL})}>{i18n(`${props.headerTitle} ${hasErrors ? '(Draft)' : ''}`)}</span>
                        </div>
                        <ErrorsAndWarningsCount errorList={props.errorList} size='large' />
                </div>);
@@ -134,7 +134,7 @@ class HeatFileTree extends React.Component  {
                        <div key={node.name + rand} className={classNames({'tree-block-inside' : !node.header})}>
                                {
                                        node.header ?
-                                       <HeatFileTreeHeader selectedNode={selectedNode} errorList={this.props.errorList} selectNode={(nodeName) => this.selectNode(nodeName)}  /> :
+                                       <HeatFileTreeHeader headerTitle={node.name} selectedNode={selectedNode} errorList={this.props.errorList} selectNode={(nodeName) => this.selectNode(nodeName)}  /> :
                                        <HeatFileTreeRow toggleExpanded={this.props.toggleExpanded} node={node} path={path} selectedNode={selectedNode} selectNode={() => this.selectNode(node.name)} />
                                }
                                {
index 11f3543..c7ab3e6 100644 (file)
@@ -186,12 +186,12 @@ const OnboardingProcedure = ({onboardingMethod, onDataChanged, genericFieldInfo}
                <GridSection title={i18n('Onboarding procedure')}>
                        <GridItem colSpan={4}>
                                <Input
-                                       label={i18n('HEAT file')}
+                                       label={i18n('Network Package')}
                                        overlayPos='top'
                                        isValid={genericFieldInfo.onboardingMethod.isValid}
-                                       checked={onboardingMethod === onboardingMethodConst.HEAT}
+                                       checked={onboardingMethod === onboardingMethodConst.NETWORK_PACKAGE}
                                        errorText={genericFieldInfo.onboardingMethod.errorText}
-                                       onChange={() => onDataChanged({onboardingMethod:'HEAT'},SP_CREATION_FORM_NAME)}
+                                       onChange={() => onDataChanged({onboardingMethod: onboardingMethodConst.NETWORK_PACKAGE},SP_CREATION_FORM_NAME)}
                                        type='radio'
                                        data-test-id='new-vsp-creation-procedure-heat' />
                        </GridItem>
@@ -202,7 +202,7 @@ const OnboardingProcedure = ({onboardingMethod, onDataChanged, genericFieldInfo}
                                        checked={onboardingMethod === onboardingMethodConst.MANUAL}
                                        isValid={genericFieldInfo.onboardingMethod.isValid}
                                        errorText={genericFieldInfo.onboardingMethod.errorText}
-                                       onChange={() => onDataChanged({onboardingMethod:'Manual'},SP_CREATION_FORM_NAME)}
+                                       onChange={() => onDataChanged({onboardingMethod: onboardingMethodConst.MANUAL},SP_CREATION_FORM_NAME)}
                                        type='radio'
                                        data-test-id='new-vsp-creation-procedure-manual' />
                        </GridItem>
index 8806ffd..a13e742 100644 (file)
@@ -53,7 +53,7 @@ export const mapStateToProps = ({softwareProduct, licenseModel: {licenseAgreemen
                        fullCategoryDisplayName
                },
                isReadOnlyMode,
-               componentsList,         
+               componentsList,
                isManual: currentSoftwareProduct.onboardingMethod === onboardingMethod.MANUAL
        };
 };
@@ -65,7 +65,6 @@ const mapActionsToProps = (dispatch, {version}) => {
                        licenseModelId,
                        version
                }),
-               onAttachmentsSelect: ({id: softwareProductId}) => OnboardingActionHelper.navigateToSoftwareProductAttachments(dispatch, {softwareProductId, version}),
                onUpload: (softwareProductId, formData) =>
                        SoftwareProductActionHelper.uploadFile(dispatch, {
                                softwareProductId,
@@ -98,7 +97,7 @@ const mapActionsToProps = (dispatch, {version}) => {
                        data: {
                                title: i18n('Upload Failed'),
                                confirmationButtonText: i18n('Continue'),
-                               msg: i18n('no zip file was uploaded or zip file doesn\'t exist')
+                               msg: i18n('no zip or csar file was uploaded or expected file doesn\'t exist')
                        }
                }),
                onComponentSelect: ({id: softwareProductId, componentId}) => {
index 7ffbeda..72a4164 100644 (file)
@@ -57,7 +57,6 @@ class SoftwareProductLandingPageView extends React.Component {
                isReadOnlyMode: React.PropTypes.bool,
                componentsList: React.PropTypes.arrayOf(ComponentPropType),
                onDetailsSelect: React.PropTypes.func,
-               onAttachmentsSelect: React.PropTypes.func,
                onUpload: React.PropTypes.func,
                onUploadConfirmation: React.PropTypes.func,
                onInvalidFileSizeUpload: React.PropTypes.func,
@@ -78,15 +77,13 @@ class SoftwareProductLandingPageView extends React.Component {
                                        disableClick={true}
                                        ref='fileInput'
                                        name='fileInput'
-                                       accept='.zip'
+                                       accept='.zip, .csar'
                                        disabled>
                                        <div className='draggable-wrapper'>
                                                <div className='software-product-landing-view-top'>
                                                        <div className='row'>
                                                                <ProductSummary currentSoftwareProduct={currentSoftwareProduct} onDetailsSelect={onDetailsSelect} />
-                                                               {isManual ?
-                                                                       <div className='details-panel'/>
-                                                                       : this.renderProductDetails(currentSoftwareProduct, isReadOnlyMode)}
+                                                               {this.renderProductDetails(isManual, isReadOnlyMode)}
                                                        </div>
                                                </div>
                                        </div>
@@ -106,34 +103,18 @@ class SoftwareProductLandingPageView extends React.Component {
                }
        }
 
-       renderProductDetails(currentSoftwareProduct, isReadOnlyMode) {
-               let {validationData} = currentSoftwareProduct;
-               let {onAttachmentsSelect} = this.props;
-               let details = {
-                       heatTemplates: validationData ? '1' : '0',
-                       images: '0',
-                       otherArtifacts: '0'
-               };
-
+       renderProductDetails(isManual, isReadOnlyMode) {
                return (
                        <div className='details-panel'>
-                               <div className='software-product-landing-view-heading-title'>{i18n('Software Product Attachments')}</div>
-                               <div className='software-product-landing-view-top-block'>
-                                       <div
-                                               className='software-product-landing-view-top-block-col'
-                                               onClick={() => onAttachmentsSelect(currentSoftwareProduct)}>
-                                               <div>
-                                                       <div className='attachment-details'>{i18n('HEAT Templates')} (<span
-                                                               className='attachment-details-count'>{details.heatTemplates}</span>)
-                                                       </div>
-                                               </div>
+                               { !isManual && <div>
+                                       <div className='software-product-landing-view-heading-title'>{i18n('Software Product Attachments')}</div>
+                                               <DraggableUploadFileBox
+                                                       dataTestId='upload-btn'
+                                                       isReadOnlyMode={isReadOnlyMode}
+                                                       className={classnames('software-product-landing-view-top-block-col-upl', {'disabled': isReadOnlyMode})}
+                                                       onClick={() => this.refs.fileInput.open()}/>
                                        </div>
-                                       <DraggableUploadFileBox
-                                               dataTestId='upload-btn'
-                                               isReadOnlyMode={isReadOnlyMode}
-                                               className={classnames('software-product-landing-view-top-block-col-upl', {'disabled': isReadOnlyMode})}
-                                               onClick={() => this.refs.fileInput.open()}/>
-                               </div>
+                               }
                        </div>
                );
        }
index 5dfe98f..355a316 100644 (file)
@@ -36,13 +36,13 @@ describe('SoftwareProduct Attachments - View: ', function () {
                let versionControllerData = VersionControllerUtilsFactory.build();
 
                let softwareProductAttachments = {
+                       attachmentsDetails: {activeTab: tabsMapping.SETUP},
                        heatSetup: {},
                        heatValidation: {
                                attachmentsTree,
                                errorList
                        },
-                       heatSetupCache: {},
-                       activeTab: tabsMapping.SETUP
+                       heatSetupCache: {}
                };
                let data = defaultStoreFactory.build({softwareProduct: {softwareProductAttachments, softwareProductEditor: {data: {...versionControllerData}}}});
                var result = mapStateToProps(data);
@@ -57,6 +57,7 @@ describe('SoftwareProduct Attachments - View: ', function () {
                let versionControllerData = VersionControllerUtilsFactory.build();
 
                let softwareProductAttachments = {
+                       attachmentsDetails: {},
                        heatSetup: {},
                        heatValidation: {
                                attachmentsTree,
index d0131e4..6542847 100644 (file)
                                                                                <include>**/default.rb</include>
                                                                        </includes>
                                                                </fileset>
+                                                               <!-- static configuration files -->
+                                                               <fileset>       
+                                                               <directory>${project.parent.basedir}/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/files/default</directory>
+                                                               <includes>
+                                                                               <include>Artifact-Generator.properties</include>
+                                                                               <include>error-configuration.yaml</include>
+                                                                               <include>ecomp-error-configuration.yaml</include>
+                                                                               <include>logback.xml</include>
+                                                                       </includes>
+                                                       </fileset>
                                                        </filesets>
                                                </configuration>
                                        </execution>
                                                                        </resources>
                                                                </configuration>
                                                        </execution>
+                                                       
+                                                       <execution>
+                                                               <id>copy-static-configuration-files</id>
+                                                               <phase>validate</phase>
+                                                               <goals>
+                                                                       <goal>copy-resources</goal>
+                                                               </goals>
+                                                               <configuration>
+                                                               <outputDirectory>${project.parent.basedir}/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/files/default</outputDirectory>
+                                                               <resources>
+                                                                       <resource>
+                                                                               <directory>${project.parent.basedir}/catalog-be/src/main/resources/config</directory>
+                                                                               <includes>
+                                                                                       <include>Artifact-Generator.properties</include>
+                                                                                       <include>error-configuration.yaml</include>
+                                                                                       <include>ecomp-error-configuration.yaml</include>
+                                                                                       <include>logback.xml</include>
+                                                                               </includes>
+                                                                       </resource>
+                                                               </resources>
+                                                               </configuration>
+                                                       </execution>
+                                                       
                                                        <execution>
                                                                <id>copy-resources-be</id>
                                                                <phase>validate</phase>
                                        <plugin>
                                                <groupId>io.fabric8</groupId>
                                                <artifactId>docker-maven-plugin</artifactId>
-                                               <version>0.19.1</version>
+                                               <version>0.22.1</version>
 
                                                <configuration>
-                                                       <verbose>true</verbose>
+                                                       <verbose>false</verbose>
                                                        <apiVersion>1.23</apiVersion>
 
                                                        <images>
                                 <id>clean-images</id>
                                 <phase>pre-clean</phase>
                                 <goals>
-                                <goal>remove</goal>
+                                       <goal>remove</goal>
                                 </goals>
                                 <configuration>
-                                <removeAll>true</removeAll>
-                                <image>openecomp/sdc-backend,openecomp/sdc-frontend,openecomp/sdc-elasticsearch,openecomp/sdc-kibana<!-- ,openecomp/sdc-sanity --></image>
+                                       <removeAll>true</removeAll>
                                 </configuration>
                                                        </execution>
 
                                                                        <goal>push</goal>
                                 </goals>
                                 <configuration>
-                                <image>openecomp/sdc-backend,openecomp/sdc-frontend,openecomp/sdc-elasticsearch,openecomp/sdc-kibana<!-- ,openecomp/sdc-sanity --></image>
+                                       <image>openecomp/sdc-backend,openecomp/sdc-frontend,openecomp/sdc-elasticsearch,openecomp/sdc-kibana,openecomp/sdc-cassandra<!--,openecomp/sdc-sanity--></image>
                                 </configuration>
                                                        </execution>
                                                </executions>
index 7054cc1..9052e74 100644 (file)
@@ -1,36 +1,21 @@
-FROM jetty:9.3-jre8
+FROM openecomp/base_sdc-backend:1.0.0-SNAPSHOT-latest
 
-ARG HTTP_PROXY
-ARG HTTPS_PROXY
-
-ENV HTTP_PROXY  ${HTTP_PROXY}
-ENV HTTPS_PROXY ${HTTPS_PROXY}
-
-RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy  \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \
-    if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi 
+COPY chef-solo /root/chef-solo/
 
+COPY chef-repo/cookbooks/. /root/chef-solo/cookbooks/
 
-RUN apt-get -y update
-RUN apt-get -y install apt-utils
-RUN apt-get -y install curl
-RUN apt-get -y install vim
-RUN apt-get -y install jq
-RUN apt-get -y install python libssl-dev libcurl4-openssl-dev python-dev gcc
+#RUN python /root/chef-solo/cookbooks/sdc-normatives/files/default/get-pip.py
 
-COPY chef-solo /root/chef-solo/
-COPY chef-repo/cookbooks/. /root/chef-solo/cookbooks/
+ADD onboarding-be-*.war        ${JETTY_BASE}/webapps/
 
-RUN python /root/chef-solo/cookbooks/sdc-normatives/files/default/get-pip.py
-RUN pip install pycurl
+ADD catalog-be-*.war           ${JETTY_BASE}/webapps/
 
-# install chef-solo
-RUN curl -L https://omnitruck.chef.io/install.sh | bash
+ADD api-docs.war              ${JETTY_BASE}/webapps/
 
-ADD onboarding-be-*.war                        ${JETTY_BASE}/webapps/
-ADD catalog-be-*.war                           ${JETTY_BASE}/webapps/
-ADD api-docs.war                                  ${JETTY_BASE}/webapps/
-RUN chown -R jetty:jetty                       ${JETTY_BASE}/webapps
+RUN chown -R jetty:jetty       ${JETTY_BASE}/webapps
 
 COPY startup.sh /root/
+
 RUN chmod 770 /root/startup.sh
+
 ENTRYPOINT [ "/root/startup.sh" ]
index 7af6de1..6066aeb 100644 (file)
@@ -1,30 +1,11 @@
-FROM cassandra:2.1.17
-
-ARG HTTP_PROXY
-ARG HTTPS_PROXY
-
-ENV HTTP_PROXY  ${HTTP_PROXY}
-ENV HTTPS_PROXY ${HTTPS_PROXY}
-
-RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy  \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \
-    if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi 
-
-#ENV DEBIAN_FRONTEND noninteractive
-RUN apt-get -y update && apt-get -y install --no-install-recommends \
-    curl   \
-    vim \
-    apt-utils  \
-    openjdk-8-jdk
-
-RUN update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
+FROM openecomp/base_sdc-cassandra:1.0.0-SNAPSHOT-latest
 
 COPY chef-solo /root/chef-solo/
-COPY chef-repo/cookbooks /root/chef-solo/cookbooks/
-
-# install chef-solo
-RUN curl -L https://omnitruck.chef.io/install.sh | bash
 
+COPY chef-repo/cookbooks /root/chef-solo/cookbooks/
 
 COPY startup.sh /root/
+
 RUN chmod 770 /root/startup.sh
+
 ENTRYPOINT [ "/root/startup.sh" ]
index 89516a6..60db8e5 100644 (file)
@@ -1,27 +1,11 @@
-FROM elasticsearch:2.1.2
-
-ARG HTTP_PROXY
-ARG HTTPS_PROXY
-
-ENV HTTP_PROXY  ${HTTP_PROXY}
-ENV HTTPS_PROXY ${HTTPS_PROXY}
-
-RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy  \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \
-    if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi 
-
-RUN apt-get -y update
-RUN apt-get -y install apt-utils
-RUN apt-get -y install curl
-RUN apt-get -y install vim
-RUN mkdir -p /var/chef/nodes
+FROM openecomp/base_sdc-elasticsearch:1.0.0-SNAPSHOT-latest
 
 COPY chef-solo /root/chef-solo/
-COPY chef-repo/cookbooks /root/chef-solo/cookbooks/
 
-# install chef-solo
-RUN curl -L https://omnitruck.chef.io/install.sh | bash
+COPY chef-repo/cookbooks /root/chef-solo/cookbooks/
 
 COPY startup.sh /root/
+
 RUN chmod 770 /root/startup.sh
 
 ENTRYPOINT [ "/root/startup.sh" ]
index c59d9e2..7f9207d 100644 (file)
@@ -1,30 +1,16 @@
-FROM jetty:9.3-jre8
-
-ARG HTTP_PROXY
-ARG HTTPS_PROXY
-
-ENV HTTP_PROXY  ${HTTP_PROXY}
-ENV HTTPS_PROXY ${HTTPS_PROXY}
-
-RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy  \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \
-    if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi 
-
-RUN apt-get -y update
-RUN apt-get -y install apt-utils
-RUN apt-get -y install curl
-RUN apt-get -y install vim
+FROM openecomp/base_sdc-frontend:1.0.0-SNAPSHOT-latest
 
 COPY chef-solo /root/chef-solo/
-COPY chef-repo/cookbooks /root/chef-solo/cookbooks/
 
-# install chef-solo
-RUN curl -L https://omnitruck.chef.io/install.sh | bash
+COPY chef-repo/cookbooks /root/chef-solo/cookbooks/
 
 RUN cp ${JETTY_HOME}/resources/log4j.properties ${JETTY_BASE}/resources/log4j.properties
 
-ADD onboarding*.war                    ${JETTY_BASE}/webapps/
-ADD catalog-fe-*.war     ${JETTY_BASE}/webapps/
-RUN chown -R jetty:jetty               ${JETTY_BASE}/webapps
+ADD onboarding*.war         ${JETTY_BASE}/webapps/
+
+ADD catalog-fe-*.war        ${JETTY_BASE}/webapps/
+
+RUN chown -R jetty:jetty    ${JETTY_BASE}/webapps
 
 COPY startup.sh /root/
 
index a42225a..6a058de 100644 (file)
@@ -1,23 +1,8 @@
-FROM kibana:4.3.3
-
-ARG HTTP_PROXY
-ARG HTTPS_PROXY
-
-ENV HTTP_PROXY  ${HTTP_PROXY}
-ENV HTTPS_PROXY ${HTTPS_PROXY}
-
-RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy  \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \
-    if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi 
-
-RUN apt-get -y update
-RUN apt-get -y install curl
-RUN apt-get -y install vim
+FROM openecomp/base_sdc-kibana:1.0.0-SNAPSHOT-latest
 
 COPY chef-solo /root/chef-solo/
-COPY chef-repo/cookbooks/. /root/chef-solo/cookbooks/
 
-# install chef-solo
-RUN curl -L https://omnitruck.chef.io/install.sh | bash
+COPY chef-repo/cookbooks/. /root/chef-solo/cookbooks/
 
 COPY startup.sh /root/
 
index 9dd8291..ea137b4 100644 (file)
@@ -1,27 +1,11 @@
-FROM ubuntu:16.04
-
-ARG HTTP_PROXY
-ARG HTTPS_PROXY
-
-ENV HTTP_PROXY  ${HTTP_PROXY}
-ENV HTTPS_PROXY ${HTTPS_PROXY}
-
-RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy  \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \
-RUN apt-get -y update && \
-    apt-get -y install --no-install-recommends apt-utils && \
-    apt-get install curl \
-                    default-jre 
-                    openjdk-8-jdk
-                    vim && \
-    update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
-    if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi 
+FROM openecomp/base_sdc-sanity:1.0.0-SNAPSHOT-latest
 
 COPY chef-solo /root/chef-solo/
-COPY chef-repo/cookbooks/. /root/chef-solo/cookbooks/
 
-# install chef-solo
-RUN curl -L https://omnitruck.chef.io/install.sh | bash
+COPY chef-repo/cookbooks/. /root/chef-solo/cookbooks/
 
 COPY startup.sh /root/
+
 RUN chmod 770 /root/startup.sh
+
 ENTRYPOINT [ "/root/startup.sh" ]
index 3e3c9fa..5928020 100644 (file)
@@ -3,7 +3,6 @@
 
        <modelVersion>4.0.0</modelVersion>
 
-       <groupId>org.openecomp.sdc</groupId>
        <artifactId>security-utils</artifactId>
 
        <parent>
index 0059e23..a86358a 100644 (file)
                </dependency>
 
                <dependency>
-                       <groupId>com.thinkaurelius.titan</groupId>
-                       <artifactId>titan-cassandra</artifactId>
+                       <groupId>org.openecomp.sdc.sdc-titan-cassandra</groupId>
+                       <artifactId>sdc-titan-cassandra</artifactId>
                        <version>${titan.version}</version>
                        <scope>compile</scope>
                        <exclusions>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-assembly-plugin</artifactId>
-                               <version>2.5.5</version>
                                <executions>
                                        <execution>
                                                <id>create.jar.with.dependencies</id>
index 06e3be2..03b3f15 100644 (file)
                </dependency>
 
                <dependency>
-                       <groupId>com.thinkaurelius.titan</groupId>
-                       <artifactId>titan-cassandra</artifactId>
+                       <groupId>org.openecomp.sdc.sdc-titan-cassandra</groupId>
+                       <artifactId>sdc-titan-cassandra</artifactId>
                        <version>${titan.version}</version>
                        <scope>compile</scope>
                </dependency>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-assembly-plugin</artifactId>
-                               <version>2.5.5</version>
                                <executions>
                                        <execution>
                                                <id>create.jar.with.dependencies</id>