Updated pom to remove distribution-management section and corrected aai base image... 75/118075/3
authorPolavarapu, Chaitanya (cp8128) <cp8128@att.com>
Fri, 12 Feb 2021 18:32:33 +0000 (13:32 -0500)
committerPolavarapu, Chaitanya (cp8128) <cp8128@att.com>
Tue, 23 Feb 2021 20:54:08 +0000 (15:54 -0500)
Issue-ID: AAI-2996
Change-Id: I28da9ccf5618e180e04e3f29b0440bab5e3ffc3f
Signed-off-by: Polavarapu, Chaitanya (cp8128) <cp8128@att.com>
80 files changed:
pom.xml
src/main/bin/start.sh
src/main/docker/Dockerfile
src/main/java/org/onap/aai/babel/BabelApplication.java
src/main/java/org/onap/aai/babel/config/PropertyPasswordConfiguration.java [new file with mode: 0644]
src/main/java/org/onap/aai/babel/csar/CsarToXmlConverter.java
src/main/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractor.java
src/main/java/org/onap/aai/babel/logging/LogHelper.java
src/main/java/org/onap/aai/babel/service/GenerateArtifactsServiceImpl.java
src/main/java/org/onap/aai/babel/xml/generator/ModelGenerator.java
src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java
src/main/resources/application.properties
src/test/java/org/onap/aai/babel/csar/vnfcatalog/TestVnfVendorImageExtractor.java
src/test/java/org/onap/aai/babel/logging/TestApplicationLogger.java
src/test/java/org/onap/aai/babel/service/TestCsarToXmlConverter.java
src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java
src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java
src/test/resources/auth/auth_policy.json
src/test/resources/compressedArtifacts/service-Dev2devnfodservice17July-csar.csar [new file with mode: 0644]
src/test/resources/compressedArtifacts/service-NetworkCloudVnfServiceMock-csar.csar [new file with mode: 0644]
src/test/resources/compressedArtifacts/service-RgCollector615-csar.csar [new file with mode: 0644]
src/test/resources/compressedArtifacts/service-VdbeSrv-csar.csar [new file with mode: 0644]
src/test/resources/compressedArtifacts/service_CosAvpn_csar.csar [new file with mode: 0644]
src/test/resources/generatedXml/AAI-COS_AVPN-service-1.0.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-ExtVL-resource-40.0.xml
src/test/resources/generatedXml/AAI-ExtVL-resource-48.0.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-Fabric Configuration-resource-10.0.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-Grouping Service for Test-service-1.0.xml
src/test/resources/generatedXml/AAI-Network Cloud VNF MOCK-resource-1.0.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-Network Cloud VNF Service MOCK-service-1.0.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-Network Res 1806-resource-4.0.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-Network Res 1806..NetworkCollection..0-resource-1.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-NetworkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-Port Mirror_Test-service-1.0.xml
src/test/resources/generatedXml/AAI-Port Mirroring Configuration-resource-35.0.xml
src/test/resources/generatedXml/AAI-RG_collector_6-15-service-1.0.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-SCP-Test-VSP-resource-1.0.xml
src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml
src/test/resources/generatedXml/AAI-SD-WAN-Test-VSP-resource-1.0.xml
src/test/resources/generatedXml/AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml
src/test/resources/generatedXml/AAI-SdWanTestVsp..DUMMY..module-0-resource-2.xml
src/test/resources/generatedXml/AAI-TEST CR_1-resource-7.0.xml
src/test/resources/generatedXml/AAI-TEST SVC_1-service-1.0.xml
src/test/resources/generatedXml/AAI-Tunnel_XConnTest-resource-2.0.xml
src/test/resources/generatedXml/AAI-VLAN Network Receptor Configuration-resource-3.0.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-VRF Entry Configuration-resource-3.0.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-Vscpaas_Test-service-1.0.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..0-resource-1.xml
src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..1-resource-1.xml
src/test/resources/generatedXml/AAI-oam_group-resource-3.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-testcr_1..NetworkCollection..0-resource-1.xml
src/test/resources/generatedXml/AAI-untr_group-resource-3.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-vDBE-resource-0.5.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-vDBE_srv-service-1.0.xml [new file with mode: 0644]
src/test/resources/generatedXml/AAI-vdbe0..Vdbe..main..module-0-resource-2.xml [new file with mode: 0644]
src/test/resources/jsonFiles/newVnfVendorImageConfigurations.json [new file with mode: 0644]
src/test/resources/jsonFiles/vnfFromRequest.json [new file with mode: 0644]
src/test/resources/jsonFiles/vnfodservice-vendorImageConfigurations.json [new file with mode: 0644]
src/test/resources/logback.xml
src/test/resources/response/response.json
src/test/resources/response/responseWithVersionLessThan1.json
src/test/resources/response/validNoVnfConfigurationResponse.json
src/test/resources/ymlFiles/resource-Cindervolume-template.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-Contrailport-template-1.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-Contrailport-template.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-Contrailv2virtualnetwork-template-1.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-Contrailv2virtualnetwork-template.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-Contrailvirtualnetwork-template.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-NestedcomplexvfNodesHeatOam-template.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-NestedcomplexvfNodesHeatPrx-template.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-NestedcomplexvfNodesHeatRdn-template.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-Neutronport-template-1.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-Neutronport-template.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-ScptestvspNodesBe-template.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-ScptestvspNodesFe0-template.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-ScptestvspNodesFe1-template.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-ScptestvspNodesSmp-template.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-Securityrules-template.YML [new file with mode: 0644]
src/test/resources/ymlFiles/resource-Subinterface-template.yml [new file with mode: 0644]
src/test/resources/ymlFiles/resource-Vl-template.yml [new file with mode: 0644]

diff --git a/pom.xml b/pom.xml
index 41b8006..71447c9 100644 (file)
--- a/pom.xml
+++ b/pom.xml
     See the License for the specific language governing permissions and
     limitations under the License.
     ============LICENSE_END=========================================================
-
 -->
+
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+                xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
 
        <parent>
                <groupId>org.onap.aai.aai-common</groupId>
                <artifactId>aai-parent</artifactId>
-               <version>1.7.3</version>
+               <version>1.8.1</version>
        </parent>
 
        <groupId>org.onap.aai</groupId>
                <sonar.jacoco.reportPath />
                <sonar.jacoco.itReportPath />
                <sonar.jacoco.reportMissing.force.zero />
-               
+
+               <jacoco.report.directory>${project.build.directory}/code-coverage</jacoco.report.directory>
                <jacoco.line.coverage.limit>0.90</jacoco.line.coverage.limit>
+               <sonar.jacoco.reportPath />
+               <sonar.jacoco.itReportPath />
+               <sonar.jacoco.reportMissing.force.zero />
+
+               <jacoco-maven-plugin.version>0.8.6</jacoco-maven-plugin.version>
 
                <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
                <sonar.coverage.jacoco.xmlReportPaths>${project.reporting.outputDirectory}/jacoco-ut/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
 
                <sonar.scanner.version>3.7.0.1746</sonar.scanner.version>
 
-        <!-- docker related properties -->
+               <!-- java 11 related properties -->
+               <maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version>
+               <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
+               <maven-compiler-plugin.source>11</maven-compiler-plugin.source>
+               <maven-compiler-plugin.target>11</maven-compiler-plugin.target>
+               <maven-compiler-plugin.test.source>11</maven-compiler-plugin.test.source>
+               <maven-compiler-plugin.test.target>11</maven-compiler-plugin.test.target>
+               <sonar-maven-plugin.version>3.7.0.1746</sonar-maven-plugin.version>
+
+               <!-- docker related properties -->
                <docker.fabric.version>0.28.0</docker.fabric.version>
                <aai.docker.version>1.0.0</aai.docker.version>
                <aai.build.directory>${project.build.directory}/${project.artifactId}-${project.version}-build/
                </aai.build.directory>
                <aai.docker.namespace>onap</aai.docker.namespace>
                <aai.base.image>alpine</aai.base.image>
-               <aai.base.image.version>1.6.0</aai.base.image.version>
+               <aai.base.image.version>1.8.1</aai.base.image.version>
 
                <!-- Dependency Versions -->
                <sdc.tosca.version>1.5.1</sdc.tosca.version>
 
+               <aai.common.version>1.8.1</aai.common.version>
+               <aaf.version>2.1.21</aaf.version>
+               <common.logging.version>1.2.2</common.logging.version>
+
+               <commons.compress.version>1.19</commons.compress.version>
+
                <javax.ws.rs.version>2.1</javax.ws.rs.version>
-               <mvn.jaxb2.version>0.13.2</mvn.jaxb2.version>
+               <mvn.jaxb2.version>0.13.3</mvn.jaxb2.version>
                <aai-schema.group.id>org.onap.aai.schema-service</aai-schema.group.id>
-               <aai-schema.version>1.7.6</aai-schema.version>
 
-               <sdc.distribution.client.version>1.3.0</sdc.distribution.client.version>
+               <aai-schema.version>1.8.3</aai-schema.version>
+               <apache.lang3.version>3.7</apache.lang3.version>
+               <aai.rest.client.version>1.2.1</aai.rest.client.version>
+
+               <sdc.distribution.client.version>1.4.1</sdc.distribution.client.version>
                <xmlunit.version>1.6</xmlunit.version>
 
                <antrun.version>1.8</antrun.version>
 
                <javax.activation.version>1.1.1</javax.activation.version>
-        <!-- This will be used for the docker images as the default format of maven build has issues -->
+               <!-- This will be used for the docker images as the default format of maven build has issues -->
                <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
 
        </properties>
 
        <profiles>
-        <!-- Docker profile to be used for building docker image and pushing to nexus -->
+               <!-- Docker profile to be used for building docker image and pushing to nexus -->
+
                <profile>
                        <id>docker</id>
                        <build>
                                                                                def userAaiBaseImage = session.userProperties['aai.base.image'];
                                                                                def userAaiCommonVersion = session.userProperties['aai.base.image.version'];
                                                                                if (userAaiCommonVersion != null) {
-                                                                               project.properties['aai.base.image.version'] = userAaiCommonVersion;
+                                                                                       project.properties['aai.base.image.version'] = userAaiCommonVersion;
                                                                                }
                                                                                if (userAaiBaseImage != null) {
-                                                                               project.properties['aai.base.image'] = userAaiBaseImage;
+                                                                                       project.properties['aai.base.image'] = userAaiBaseImage;
                                                                                }
                                                                                log.info 'Base image flavour: ' + project.properties['aai.base.image'];
                                                                                log.info 'Base image version: ' + project.properties['aai.base.image.version'];
                                                                                        <tag>latest</tag>
                                                                                        <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}-STAGING-latest</tag>
                                                                                        <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}-STAGING-${maven.build.timestamp}</tag>
+                                                                                       <tag>${image.tag}</tag>
                                                                                </tags>
                                                                                <cleanup>try</cleanup>
                                                                                <dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir>
                        </build>
                </profile>
        </profiles>
+
        <dependencies>
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-jersey</artifactId>
+                       <exclusions>
+                               <exclusion>
+                                       <groupId>org.springframework.boot</groupId>
+                                       <artifactId>spring-boot-starter-jetty</artifactId>
+                               </exclusion>
+                               <exclusion>
+                                       <groupId>org.springframework.boot</groupId>
+                                       <artifactId>spring-boot-starter-tomcat</artifactId>
+                               </exclusion>
+                       </exclusions>
+               </dependency>
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-web</artifactId>
+                       <exclusions>
+                               <exclusion>
+                                       <groupId>org.springframework.boot</groupId>
+                                       <artifactId>spring-boot-starter-jetty</artifactId>
+                               </exclusion>
+                               <exclusion>
+                                       <groupId>org.springframework.boot</groupId>
+                                       <artifactId>spring-boot-starter-tomcat</artifactId>
+                               </exclusion>
+                       </exclusions>
+               </dependency>
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-aop</artifactId>
                        <exclusions>
                                <exclusion>
                                        <groupId>org.springframework.boot</groupId>
                        <groupId>org.onap.aai</groupId>
                        <artifactId>rest-client</artifactId>
                </dependency>
-               
+               <dependency>
+                       <groupId>org.onap.aai.aai-common</groupId>
+                       <artifactId>aai-aaf-auth</artifactId>
+                       <version>${aai.common.version}</version>
+                       <exclusions>
+                               <exclusion>
+                                       <groupId>org.springframework.boot</groupId>
+                                       <artifactId>spring-boot-starter-web</artifactId>
+                               </exclusion>
+                       </exclusions>
+               </dependency>
+               <dependency>
+                       <groupId>org.onap.aaf.authz</groupId>
+                       <artifactId>aaf-cadi-core</artifactId>
+                       <version>${aaf.version}</version>
+                       <scope>compile</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.onap.aaf.authz</groupId>
+                       <artifactId>aaf-cadi-aaf</artifactId>
+                       <version>${aaf.version}</version>
+                       <scope>compile</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.onap.aaf.authz</groupId>
+                       <artifactId>aaf-auth-client</artifactId>
+                       <version>${aaf.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.onap.aaf.authz</groupId>
+                       <artifactId>aaf-cadi-client</artifactId>
+                       <version>${aaf.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.onap.aaf.authz</groupId>
+                       <artifactId>aaf-misc-env</artifactId>
+                       <version>${aaf.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.onap.aaf.authz</groupId>
+                       <artifactId>aaf-misc-rosetta</artifactId>
+                       <version>${aaf.version}</version>
+               </dependency>
+
                <!-- Testing -->
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <version>${sdc.distribution.client.version}</version>
                        <scope>test</scope>
                </dependency>
+               <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+                       <version>4.12</version>
+                       <scope>test</scope>
+               </dependency>
+
                <dependency>
                        <groupId>xmlunit</groupId>
                        <artifactId>xmlunit</artifactId>
                        <groupId>javax.xml.bind</groupId>
                        <artifactId>jaxb-api</artifactId>
                </dependency>
+               <dependency>
+                       <groupId>javax.xml.ws</groupId>
+                       <artifactId>jaxws-api</artifactId>
+               </dependency>
                <dependency>
                        <groupId>com.sun.xml.bind</groupId>
                        <artifactId>jaxb-core</artifactId>
                        </plugin>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-surefire-plugin</artifactId>
+                               <artifactId>maven-compiler-plugin</artifactId>
+                               <version>${maven-compiler-plugin.version}</version>
+                               <inherited>true</inherited>
                                <configuration>
-                                       <reuseForks>false</reuseForks>
-                                       <forkCount>1</forkCount>
-                                       <environmentVariables>
-                                               <APP_HOME>.</APP_HOME>
-                                               <CONFIG_HOME>src/test/resources</CONFIG_HOME>
-                                       </environmentVariables>
+                                       <source>${maven-compiler-plugin.source}</source>
+                                       <target>${maven-compiler-plugin.target}</target>
+                                       <testSource>${maven-compiler-plugin.test.source}</testSource>
+                                       <testTarget>${maven-compiler-plugin.test.target}</testTarget>
                                </configuration>
                        </plugin>
                        <plugin>
                        </plugin>
 
 
-                       <!-- once we connect aai-parent or oparent 3.0+ we can take out this 
+                       <!-- once we connect aai-parent or oparent 3.0+ we can take out this
                             whole section -->
 
                        <plugin>
-                         <groupId>org.jacoco</groupId>
-                         <artifactId>jacoco-maven-plugin</artifactId>
-                         <version>${jacoco.version}</version>
-                         <configuration>
-                           <!-- Note: This exclusion list should match <sonar.exclusions> property 
-                                above -->
-                           <excludes>
-                             <exclude>**/gen/**</exclude>
-                             <exclude>**/generated-sources/**</exclude>
-                             <exclude>**/yang-gen/**</exclude>
-                             <exclude>**/pax/**</exclude>
-                             <exclude>org/onap/aai/babel/xml/generator/xsd/*</exclude>
-                           </excludes>
-                         </configuration>
-                         <executions>
-                           <!-- Prepares the property pointing to the JaCoCo runtime agent which 
-                                is passed as VM argument when Maven the Surefire plugin is executed. -->
-                           <execution>
-                             <id>pre-unit-test</id>
-                             <goals>
-                               <goal>prepare-agent</goal>
-                             </goals>
-                             <configuration>
-                               <!-- Sets the path to the file which contains the execution data 
-                                    . -->
-                               <destFile>${project.build.directory}/code-coverage/jacoco-ut.exec</destFile>
-                               <!-- Sets the name of the property containing the settings for JaCoCo 
-                                    runtime agent. -->
-                               <propertyName>surefireArgLine</propertyName>
-                             </configuration>
-                           </execution>
-                           <!-- Ensures that the code coverage report for unit tests is created 
-                                after unit tests have been run. -->
-                           <execution>
-                             <id>post-unit-test</id>
-                             <phase>test</phase>
-                             <goals>
-                               <goal>report</goal>
-                             </goals>
-                             <configuration>
-                               <!-- Sets the path to the file which contains the execution data 
-                                    . -->
-                               <dataFile>${project.build.directory}/code-coverage/jacoco-ut.exec</dataFile>
-                               <!-- Sets the output directory for the code coverage report. -->
-                               <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
-                             </configuration>
-                           </execution>
-                           <execution>
-                             <id>pre-integration-test</id>
-                             <phase>pre-integration-test</phase>
-                             <goals>
-                               <goal>prepare-agent</goal>
-                             </goals>
-                             <configuration>
-                               <!-- Sets the path to the file which contains the execution data 
-                                    . -->
-                               <destFile>${project.build.directory}/code-coverage/jacoco-it.exec</destFile>
-                               <!-- Sets the name of the property containing the settings for JaCoCo 
-                                    runtime agent. -->
-                               <propertyName>failsafeArgLine</propertyName>
-                             </configuration>
-                           </execution>
-                           <!-- Ensures that the code coverage report for integration tests after 
-                                integration tests have been run. -->
-                           <execution>
-                             <id>post-integration-test</id>
-                             <phase>post-integration-test</phase>
-                             <goals>
-                               <goal>report</goal>
-                             </goals>
-                             <configuration>
-                               <!-- Sets the path to the file which contains the execution data 
-                                    . -->
-                               <dataFile>${project.build.directory}/code-coverage/jacoco-it.exec</dataFile>
-                               <!-- Sets the output directory for the code coverage report. -->
-                               <outputDirectory>${project.reporting.outputDirectory}/jacoco-it</outputDirectory>
-                             </configuration>
-                           </execution>
-                           <execution>
-                             <id>default-check</id>
-                             <goals>
-                               <goal>check</goal>
-                             </goals>
-                             <configuration>
-                               <dataFile>${project.build.directory}/code-coverage/jacoco-ut.exec</dataFile>
-                               <rules>
-                                 <rule implementation="org.jacoco.maven.RuleConfiguration">
-                                   <element>BUNDLE</element>
-                                   <limits>
-                                     <limit implementation="org.jacoco.report.check.Limit">
-                                       <counter>LINE</counter>
-                                       <value>COVEREDRATIO</value>
-                                       <minimum>${jacoco.line.coverage.limit}</minimum>
-                                     </limit>
-                                   </limits>
-                                 </rule>
-                               </rules>
-                             </configuration>
-                           </execution>
-                         </executions>
+                               <groupId>org.jacoco</groupId>
+                               <artifactId>jacoco-maven-plugin</artifactId>
+                               <version>${jacoco-maven-plugin.version}</version>
+                               <configuration>
+                                       <!-- Note: This exclusion list should match <sonar.exclusions> property
+                     above -->
+                                       <excludes>
+                                               <exclude>**/gen/**</exclude>
+                                               <exclude>**/generated-sources/**</exclude>
+                                               <exclude>**/yang-gen/**</exclude>
+                                               <exclude>**/pax/**</exclude>
+                                               <exclude>org/onap/aai/babel/xml/generator/xsd/*</exclude>
+                                       </excludes>
+                               </configuration>
+                               <executions>
+                                       <!-- Prepares the property pointing to the JaCoCo runtime agent which
+                     is passed as VM argument when Maven the Surefire plugin is executed. -->
+                                       <execution>
+                                               <id>pre-unit-test</id>
+                                               <goals>
+                                                       <goal>prepare-agent</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <!-- Sets the path to the file which contains the execution data
+                                 . -->
+                                                       <destFile>${project.build.directory}/code-coverage/jacoco-ut.exec</destFile>
+                                                       <!-- Sets the name of the property containing the settings for JaCoCo
+                                 runtime agent. -->
+                                                       <propertyName>surefireArgLine</propertyName>
+                                               </configuration>
+                                       </execution>
+                                       <!-- Ensures that the code coverage report for unit tests is created
+                     after unit tests have been run. -->
+                                       <execution>
+                                               <id>post-unit-test</id>
+                                               <phase>test</phase>
+                                               <goals>
+                                                       <goal>report</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <!-- Sets the path to the file which contains the execution data
+                                 . -->
+                                                       <dataFile>${project.build.directory}/code-coverage/jacoco-ut.exec</dataFile>
+                                                       <!-- Sets the output directory for the code coverage report. -->
+                                                       <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
+                                               </configuration>
+                                       </execution>
+                                       <execution>
+                                               <id>pre-integration-test</id>
+                                               <phase>pre-integration-test</phase>
+                                               <goals>
+                                                       <goal>prepare-agent</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <!-- Sets the path to the file which contains the execution data
+                                 . -->
+                                                       <destFile>${project.build.directory}/code-coverage/jacoco-it.exec</destFile>
+                                                       <!-- Sets the name of the property containing the settings for JaCoCo
+                                 runtime agent. -->
+                                                       <propertyName>failsafeArgLine</propertyName>
+                                               </configuration>
+                                       </execution>
+                                       <!-- Ensures that the code coverage report for integration tests after
+                     integration tests have been run. -->
+                                       <execution>
+                                               <id>post-integration-test</id>
+                                               <phase>post-integration-test</phase>
+                                               <goals>
+                                                       <goal>report</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <!-- Sets the path to the file which contains the execution data
+                                 . -->
+                                                       <dataFile>${project.build.directory}/code-coverage/jacoco-it.exec</dataFile>
+                                                       <!-- Sets the output directory for the code coverage report. -->
+                                                       <outputDirectory>${project.reporting.outputDirectory}/jacoco-it</outputDirectory>
+                                               </configuration>
+                                       </execution>
+                                       <execution>
+                                               <id>default-check</id>
+                                               <goals>
+                                                       <goal>check</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <dataFile>${project.build.directory}/code-coverage/jacoco-ut.exec</dataFile>
+                                                       <rules>
+                                                               <rule implementation="org.jacoco.maven.RuleConfiguration">
+                                                                       <element>BUNDLE</element>
+                                                                       <limits>
+                                                                               <limit implementation="org.jacoco.report.check.Limit">
+                                                                                       <counter>LINE</counter>
+                                                                                       <value>COVEREDRATIO</value>
+                                                                                       <minimum>${jacoco.line.coverage.limit}</minimum>
+                                                                               </limit>
+                                                                       </limits>
+                                                               </rule>
+                                                       </rules>
+                                               </configuration>
+                                       </execution>
+                               </executions>
                        </plugin>
                        <plugin>
-                         <groupId>org.apache.maven.plugins</groupId>
-                         <artifactId>maven-surefire-plugin</artifactId>
-                         <version>3.0.0-M4</version>
-                         <configuration>
-                           <!-- Sets the VM argument line used when unit tests are run. -->
-                           <argLine>${surefireArgLine}</argLine>
-                           <!-- Excludes integration tests when unit tests are run. -->
-                           <excludes>
-                             <exclude>**/IT*.java</exclude>
-                           </excludes>
-                         </configuration>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-surefire-plugin</artifactId>
+                               <version>3.0.0-M4</version>
+                               <configuration>
+                                       <!-- Sets the VM argument line used when unit tests are run. -->
+                                       <reuseForks>false</reuseForks>
+                                       <forkCount>1</forkCount>
+                                       <environmentVariables>
+                                               <APP_HOME>.</APP_HOME>
+                                               <CONFIG_HOME>src/test/resources</CONFIG_HOME>
+                                       </environmentVariables>
+                                       <argLine>${surefireArgLine}</argLine>
+                                       <!-- Excludes integration tests when unit tests are run. -->
+                                       <excludes>
+                                               <exclude>**/IT*.java</exclude>
+                                       </excludes>
+                               </configuration>
                        </plugin>
                        <plugin>
-                         <groupId>org.apache.maven.plugins</groupId>
-                         <artifactId>maven-failsafe-plugin</artifactId>
-                         <version>3.0.0-M4</version>
-                         <executions>
-                           <!-- Ensures that both integration-test and verify goals of the Failsafe 
-                                Maven plugin are executed. -->
-                           <execution>
-                             <id>integration-tests</id>
-                             <goals>
-                               <goal>integration-test</goal>
-                               <goal>verify</goal>
-                             </goals>
-                             <configuration>
-                               <!-- Sets the VM argument line used when integration tests are run. -->
-                               <argLine>${failsafeArgLine}</argLine>
-                             </configuration>
-                           </execution>
-                         </executions>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-failsafe-plugin</artifactId>
+                               <version>3.0.0-M5</version>
+                               <executions>
+                                       <!-- Ensures that both integration-test and verify goals of the Failsafe
+                     Maven plugin are executed. -->
+                                       <execution>
+                                               <id>integration-tests</id>
+                                               <goals>
+                                                       <goal>integration-test</goal>
+                                                       <goal>verify</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <!-- Sets the VM argument line used when integration tests are run. -->
+                                                       <argLine>${failsafeArgLine}</argLine>
+                                               </configuration>
+                                       </execution>
+                               </executions>
                        </plugin>
                        <plugin>
-                         <groupId>org.sonarsource.scanner.maven</groupId>
-                         <artifactId>sonar-maven-plugin</artifactId>
-                         <version>${sonar.scanner.version}</version>
+                               <groupId>org.sonarsource.scanner.maven</groupId>
+                               <artifactId>sonar-maven-plugin</artifactId>
+                               <version>${sonar.scanner.version}</version>
                        </plugin>
                        <!-- end removable sonar config, note the additional exclusion for babel above
                             -->
index 155cb55..d68d6c8 100644 (file)
 # limitations under the License.
 # ============LICENSE_END=========================================================
 
-# jre-alpine image has $JAVA_HOME set and added to $PATH
-# ubuntu image requires to set $JAVA_HOME and add java to $PATH manually
-if ( uname -v | grep -i "ubuntu" ); then
-    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-`dpkg --print-architecture | awk -F- '{ print $NF }'`
-    export PATH=${JAVA_HOME}:$PATH
-fi
-
 APP_HOME="${APP_HOME:-/opt/app/babel}"
+mkdir -p ${APP_HOME}/logs/gc
 
 if [ -z "${CONFIG_HOME}" ]; then
        echo "CONFIG_HOME must be set in order to start the process"
        exit 1
 fi
 
-if [ -z "${KEY_STORE_PASSWORD}" ]; then
-       echo "KEY_STORE_PASSWORD must be set in order to start the process"
+#Either keystore password or server certs location must be passed. Both cannot be null
+if [ -z "${KEY_STORE_PASSWORD}" -a -z "${SERVER_CERTS_LOCATION}" ]; then
+       echo "KEY_STORE_PASSWORD or SERVER_CERTS_LOCATION must be set in order to start the process"
        exit 1
 fi
 
 PROPS="-DAPP_HOME=${APP_HOME}"
 PROPS="${PROPS} -DCONFIG_HOME=${CONFIG_HOME}"
 PROPS="${PROPS} -Dtosca.mappings.config=${CONFIG_HOME}/tosca-mappings.json"
-PROPS="${PROPS} -DKEY_STORE_PASSWORD=${KEY_STORE_PASSWORD}"
+
+if [ ! -z "$KEY_STORE_PASSWORD" ]; then
+   PROPS="${PROPS} -DKEY_STORE_PASSWORD=${KEY_STORE_PASSWORD}"
+fi
+
 PROPS="${PROPS} -Dlogging.config=${APP_HOME}/config/logback.xml"
+
 if [ ! -z "$REQUIRE_CLIENT_AUTH" ]; then
    PROPS="$PROPS -Dserver.ssl.client-auth=${REQUIRE_CLIENT_AUTH}"
 fi
+if [ ! -z "$SERVER_CERTS_LOCATION" ]; then
+   PROPS="$PROPS -Dserver.certs.location=${SERVER_CERTS_LOCATION}"
+   PROPS="$PROPS -Dserver.ssl.key-store=${SERVER_CERTS_LOCATION}/${SERVER_KEY_STORE}"
+   PROPS="$PROPS -Dserver.ssl.trust-store=${SERVER_CERTS_LOCATION}/${SERVER_TRUST_STORE}"
+fi
+PROPS="${PROPS} -Dspring.profiles.active=${SPRING_PROFILES_ACTIVE}"
+PROPS="${PROPS} -Daaf.cadi.file=${CONFIG_HOME}/cadi.properties"
 
-JVM_MAX_HEAP=${MAX_HEAP:-1024}
-
-JARFILE=$(ls ./babel*.jar);
+exec java ${JVM_OPTS} ${PROPS} -jar ${APP_HOME}/babel*.jar
 
-exec java -Xmx${JVM_MAX_HEAP}m ${PROPS} -jar ${APP_HOME}/${JARFILE}
index 369d1b5..623cfd8 100644 (file)
@@ -1,21 +1,23 @@
-FROM @aai.docker.namespace@/aai-common-@aai.base.image@:@aai.base.image.version@
+FROM @docker.push.registry@/@aai.docker.namespace@/aai-common-@aai.base.image@:@aai.base.image.version@
 
 ARG MICRO_HOME=/opt/app/babel
 
 # Build up the deployment folder structure
-RUN mkdir -p $MICRO_HOME $MICRO_HOME/logs
-
-RUN groupadd aaiadmin -g 1000
-RUN adduser -u 1000 -h /opt/aaihome/aaiadmin -S -D -G aaiadmin -s /bin/bash aaiadmin
+#RUN groupadd aaiadmin -g 1000
+#RUN adduser -u 1000 -h /opt/aaihome/aaiadmin -S -D -G aaiadmin -s /bin/bash aaiadmin
 WORKDIR $MICRO_HOME
 
-RUN chown -R aaiadmin:aaiadmin $MICRO_HOME $MICRO_HOME/logs
+USER root
 
-COPY --chown=aaiadmin:aaiadmin /maven/babel/ .
+# Create the aai user
+RUN mkdir -p /opt/aaihome $MICRO_HOME /logs && \
+    ln -s /logs $MICRO_HOME/logs && \
+    chown -R aaiadmin:aaiadmin $MICRO_HOME && \
+    chown -R aaiadmin:aaiadmin /logs
 
-USER aaiadmin
+COPY --chown=aaiadmin:aaiadmin /maven/babel/ .
+# The start script is executable and can be run directly.
 
-RUN chmod 755 bin/* \
-    && ln -s /logs $MICRO_HOME/logs
+ENTRYPOINT ["/sbin/tini", "--", "/bin/bash", "/opt/app/babel/bin/start.sh"]
 
-CMD ["/opt/app/babel/bin/start.sh"]
+USER aaiadmin
index b3eaee4..71fe7e0 100644 (file)
 
 package org.onap.aai.babel;
 
-import com.google.common.collect.ImmutableMap;
-import org.eclipse.jetty.util.security.Password;
+import org.onap.aai.babel.config.PropertyPasswordConfiguration;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.ImportResource;
 
 @SpringBootApplication
 @ImportResource("classpath:babel-beans.xml")
+@ComponentScan(basePackages = {
+        "org.onap.aai.aaf",
+        "org.onap.aai.babel"
+})
 public class BabelApplication extends SpringBootServletInitializer {
 
     private static ConfigurableApplicationContext context;
@@ -47,12 +50,17 @@ public class BabelApplication extends SpringBootServletInitializer {
         if (keyStorePassword == null || keyStorePassword.isEmpty()) {
             throw new IllegalArgumentException("Mandatory property KEY_STORE_PASSWORD not set");
         }
-        ImmutableMap<String, Object> defaults =
-                ImmutableMap.of("server.ssl.key-store-password", new Password(keyStorePassword).toString());
-
-        context = new BabelApplication() //
-                .configure(new SpringApplicationBuilder(BabelApplication.class).properties(defaults)) //
-                .run(args);
+        try {
+            SpringApplication app = new SpringApplication(BabelApplication.class);
+            app.setLogStartupInfo(false);
+            app.setRegisterShutdownHook(true);
+            app.addInitializers(new PropertyPasswordConfiguration());
+            context = app.run(args);
+        }
+        catch(Exception ex){
+            ex.printStackTrace();
+            throw ex;
+        }
     }
 
     public static void exit() {
diff --git a/src/main/java/org/onap/aai/babel/config/PropertyPasswordConfiguration.java b/src/main/java/org/onap/aai/babel/config/PropertyPasswordConfiguration.java
new file mode 100644 (file)
index 0000000..c8efa01
--- /dev/null
@@ -0,0 +1,121 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright Â© 2017-2018 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.onap.aai.babel.config;
+
+import org.apache.commons.io.IOUtils;
+import org.eclipse.jetty.util.security.Password;
+import org.onap.aai.babel.logging.LogHelper;
+import org.springframework.context.ApplicationContextInitializer;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.core.env.ConfigurableEnvironment;
+import org.springframework.core.env.MapPropertySource;
+import org.springframework.core.env.PropertySource;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Properties;
+
+public class PropertyPasswordConfiguration implements ApplicationContextInitializer<ConfigurableApplicationContext> {
+
+    @Override
+    public void initialize(ConfigurableApplicationContext applicationContext) {
+
+        Map<String, Object> sslProps = new LinkedHashMap<>();
+        ConfigurableEnvironment environment = applicationContext.getEnvironment();
+        String certPath = environment.getProperty("server.certs.location");
+        File passwordFile = null;
+        File passphrasesFile = null;
+        InputStream passwordStream = null;
+        InputStream passphrasesStream = null;
+        String keystorePassword = null;
+        String truststorePassword = null;
+
+        if (certPath != null) {
+            try {
+                passwordFile = new File(certPath + ".password");
+                passwordStream = new FileInputStream(passwordFile);
+
+                if (passwordStream != null) {
+                    keystorePassword = IOUtils.toString(passwordStream);
+                    if (keystorePassword != null) {
+                        keystorePassword = keystorePassword.trim();
+                    }
+                    sslProps.put("server.ssl.key-store-password", keystorePassword);
+                }
+            } catch (IOException e) {
+            } finally {
+                if (passwordStream != null) {
+                    try {
+                        passwordStream.close();
+                    } catch (Exception e) {
+                    }
+                }
+            }
+            try {
+                passphrasesFile = new File(certPath + ".passphrases");
+                passphrasesStream = new FileInputStream(passphrasesFile);
+
+                if (passphrasesStream != null) {
+                    Properties passphrasesProps = new Properties();
+                    passphrasesProps.load(passphrasesStream);
+                    truststorePassword = passphrasesProps.getProperty("cadi_truststore_password");
+                    if (truststorePassword != null) {
+                        truststorePassword = truststorePassword.trim();
+                    }
+                    sslProps.put("server.ssl.trust-store-password", truststorePassword);
+                } else {
+                }
+            } catch (IOException e) {
+            } finally {
+                if (passphrasesStream != null) {
+                    try {
+                        passphrasesStream.close();
+                    } catch (Exception e) {
+                    }
+                }
+            }
+        }
+        if (keystorePassword == null || keystorePassword.isEmpty()) {
+            keystorePassword = System.getProperty("KEY_STORE_PASSWORD");
+            if (keystorePassword != null && (!keystorePassword.isEmpty()) ) {
+                System.setProperty("server.ssl.key-store-password", new Password(keystorePassword).toString());
+            }
+            if (keystorePassword == null || keystorePassword.isEmpty()) {
+                throw new IllegalArgumentException("Mandatory property KEY_STORE_PASSWORD not set");
+            }
+        }
+        else {
+            sslProps.put("server.ssl.key-store-password", keystorePassword);
+        }
+        if (truststorePassword == null || truststorePassword.isEmpty()) {
+        }
+        else {
+            sslProps.put("server.ssl.trust-store-password", truststorePassword);
+        }
+        if (!sslProps.isEmpty()) {
+            PropertySource<?> additionalProperties = new MapPropertySource("additionalProperties", sslProps);
+            environment.getPropertySources().addFirst(additionalProperties);
+        }
+    }
+}
index 6115f8f..18d294e 100644 (file)
@@ -72,7 +72,7 @@ public class CsarToXmlConverter {
         try {
             List<Artifact> ymlFiles = yamlExtractor.extract(csarArchive, name, version);
             xmlArtifacts = new ModelGenerator().generateArtifacts(csarArchive, ymlFiles);
-            logger.debug(xmlArtifacts.size() + " XML artifact(s) have been generated");
+            logger.info(ApplicationMsgs.DISTRIBUTION_EVENT,xmlArtifacts.size() + " XML artifact(s) have been generated");
         } catch (InvalidArchiveException e) {
             throw new CsarConverterException(
                     "An error occurred trying to extract the YAML files from the CSAR file : " + e);
@@ -80,7 +80,7 @@ public class CsarToXmlConverter {
             throw new CsarConverterException(
                     "An error occurred trying to generate XML files from a collection of YAML files : " + e);
         } finally {
-            logger.logMetrics(stopwatch, LogHelper.getCallerMethodName(0));
+
         }
 
         return xmlArtifacts;
index 870c8c3..8973f57 100644 (file)
@@ -44,6 +44,8 @@ import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
 import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory;
 import org.onap.sdc.toscaparser.api.NodeTemplate;
 
+import javax.ws.rs.core.Response;
+
 /**
  * This class is responsible for extracting Virtual Network Function (VNF) information from a TOSCA 1.1 CSAR package.
  *
@@ -158,7 +160,6 @@ public class VnfVendorImageExtractor {
         }
 
         applicationLogger.info(ApplicationMsgs.DISTRIBUTION_EVENT, vendorImageConfigurations.toString());
-        applicationLogger.logMetrics(stopwatch, LogHelper.getCallerMethodName(0));
 
         return ConfigurationsToBabelArtifactConverter.convert(vendorImageConfigurations);
     }
@@ -221,6 +222,8 @@ public class VnfVendorImageExtractor {
             try {
                 return createVendorImageConfigurations(serviceVfList, vnfConfigurationNode);
             } catch (IllegalArgumentException e) {
+                applicationLogger.setContextValue(LogHelper.MdcParameter.RESPONSE_CODE, String.valueOf(Response.Status.BAD_REQUEST.getStatusCode()));
+                applicationLogger.setContextValue(LogHelper.MdcParameter.RESPONSE_DESCRIPTION, "Invalid Csar");
                 applicationLogger.error(ApplicationMsgs.INVALID_CSAR_FILE, e);
                 throw new ToscaToCatalogException(e.getMessage());
             }
@@ -240,7 +243,7 @@ public class VnfVendorImageExtractor {
      * @return a new List of Vendor Image Configurations
      */
     private List<VendorImageConfiguration> createVendorImageConfigurations(List<NodeTemplate> serviceVfList,
-            NodeTemplate vnfConfigurationNode) {
+            NodeTemplate vnfConfigurationNode) throws IllegalArgumentException{
         List<VendorImageConfiguration> vendorImageConfigurations = Collections.emptyList();
 
         Object allowedFlavorProperties =
@@ -276,7 +279,7 @@ public class VnfVendorImageExtractor {
      *             version strings
      */
     Stream<VendorImageConfiguration> buildVendorImageConfigurations(
-            Collection<Map<String, Map<String, String>>> flavorMaps, NodeTemplate vfNodeTemplate) {
+            Collection<Map<String, Map<String, String>>> flavorMaps, NodeTemplate vfNodeTemplate) throws IllegalArgumentException {
         String resourceVendor = vfNodeTemplate.getMetaData().getValue("resourceVendor");
         applicationLogger.debug("Resource Vendor " + resourceVendor);
 
index c118d8a..b9fa351 100644 (file)
@@ -388,7 +388,7 @@ public enum LogHelper implements Logger {
     @Override
     public void info(@SuppressWarnings("rawtypes") Enum errorCode, String... args) {
         if (isInfoEnabled()) {
-            invokeErrorCodeLogger(errorLogger::info, (EELFResolvableErrorEnum) errorCode, args);
+            invokeErrorCodeLogger(debugLogger::info, (EELFResolvableErrorEnum) errorCode, args);
         }
     }
 
index 6655170..4fac909 100644 (file)
@@ -29,12 +29,9 @@ import java.util.List;
 import java.util.UUID;
 import javax.inject.Inject;
 import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.PathSegment;
-import javax.ws.rs.core.Response;
+import javax.ws.rs.core.*;
 import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.core.UriInfo;
+
 import org.apache.commons.lang3.time.StopWatch;
 import org.onap.aai.auth.AAIAuthException;
 import org.onap.aai.auth.AAIMicroServiceAuth;
@@ -99,7 +96,7 @@ public class GenerateArtifactsServiceImpl implements GenerateArtifactsService {
         applicationLogger.info(ApplicationMsgs.BABEL_REQUEST_PAYLOAD, requestHeaders.toString());
 
         String requestId = requestHeaders.getCorrelationId();
-        if (requestId == null) {
+        if (requestId == null || !isRequestIDValid(requestId)) {
             requestId = UUID.randomUUID().toString();
             applicationLogger.info(ApplicationMsgs.MISSING_REQUEST_ID, requestId);
             applicationLogger.setContextValue(MdcParameter.REQUEST_ID, requestId);
@@ -136,6 +133,15 @@ public class GenerateArtifactsServiceImpl implements GenerateArtifactsService {
         return response;
     }
 
+    private boolean isRequestIDValid(String requestId) {
+        try {
+            UUID.fromString(requestId);
+        } catch (IllegalArgumentException e) {
+            return false;
+        }
+        return true;
+    }
+
     /**
      * Generate XML model artifacts from request body.
      *
@@ -165,6 +171,7 @@ public class GenerateArtifactsServiceImpl implements GenerateArtifactsService {
             }
 
             response = buildResponse(Status.OK, gson.toJson(babelArtifacts));
+            applicationLogger.info(ApplicationMsgs.DISTRIBUTION_EVENT,LogHelper.getCallerMethodName(0));
         } catch (JsonSyntaxException e) {
             response = processError(ApplicationMsgs.INVALID_REQUEST_JSON, Status.BAD_REQUEST, e, "Malformed request.");
         } catch (CsarConverterException e) {
@@ -177,15 +184,16 @@ public class GenerateArtifactsServiceImpl implements GenerateArtifactsService {
             response = processError(ApplicationMsgs.PROCESS_REQUEST_ERROR, Status.BAD_REQUEST, //
                     e, e.getLocalizedMessage());
         } finally {
-            applicationLogger.logMetrics(stopwatch, LogHelper.getCallerMethodName(0));
+            applicationLogger.debug(stopwatch + LogHelper.getCallerMethodName(0));
         }
 
         return response;
     }
 
     private Response processError(ApplicationMsgs applicationMsgs, Status responseStatus, Exception e, String message) {
+        applicationLogger.setContextValue(MdcParameter.RESPONSE_CODE, String.valueOf(responseStatus.getStatusCode()));
+        applicationLogger.setContextValue(MdcParameter.RESPONSE_DESCRIPTION, responseStatus.getReasonPhrase());
         applicationLogger.error(applicationMsgs, e);
-
         return buildResponse(responseStatus, message);
     }
 
index 6695241..f94da4a 100644 (file)
@@ -36,15 +36,17 @@ import org.onap.aai.babel.xml.generator.data.Artifact;
 import org.onap.aai.babel.xml.generator.data.GenerationData;
 import org.onap.aai.babel.xml.generator.data.GeneratorUtil;
 import org.onap.aai.babel.xml.generator.data.GroupType;
-import org.onap.aai.cl.api.Logger;
+import javax.ws.rs.core.Response;
 
 /**
  * This class is responsible for generating XML model artifacts from a collection of CSAR artifacts.
  */
 public class ModelGenerator implements ArtifactGenerator {
 
-    private static final Logger logger = LogHelper.INSTANCE;
+    private static final LogHelper logger = LogHelper.INSTANCE;
 
+    private static final String VERSION_DELIMITER = ".";
+    private static final String VERSION_DELIMITER_REGEXP = "\\" + VERSION_DELIMITER;
     private static final String DEFAULT_SERVICE_VERSION = "1.0";
 
     /**
@@ -117,6 +119,8 @@ public class ModelGenerator implements ArtifactGenerator {
         try {
             return String.valueOf(Float.parseFloat(artifactVersion));
         } catch (Exception e) {
+            logger.setContextValue(LogHelper.MdcParameter.RESPONSE_CODE, String.valueOf(Response.Status.BAD_REQUEST.getStatusCode()));
+            logger.setContextValue(LogHelper.MdcParameter.RESPONSE_DESCRIPTION, "Invalid Artifact version");
             logger.warn(ApplicationMsgs.DISTRIBUTION_EVENT,
                     "Error generating service version from artifact version: " + artifactVersion
                             + ". Using default service version of: " + DEFAULT_SERVICE_VERSION + ". Error details: "
index ee04abc..8f71f2b 100644 (file)
@@ -32,6 +32,8 @@ import org.onap.aai.babel.xml.generator.types.ModelType;
 
 public class Widget extends Model {
 
+    public static final String GENERATOR_AAI_CONFIGLPROP_NOT_FOUND = "Cannot generate artifacts. Widget configuration not found for %s";
+
     private Set<String> keys = new HashSet<>();
 
     protected String name;
index 9a7d699..6ea9b37 100644 (file)
@@ -2,8 +2,7 @@ server.port=9516
 server.ssl.key-store=${CONFIG_HOME}/auth/tomcat_keystore
 server.ssl.client-auth=need
 
+spring.main.allow-bean-definition-overriding=true
 server.servlet.context-path=/services/babel-service
-
 logging.config=${CONFIG_HOME}/logback.xml
-
 tosca.mappings.config=${CONFIG_HOME}/tosca-mappings.json
index 7ab8ecd..83cbe20 100644 (file)
@@ -104,6 +104,15 @@ public class TestVnfVendorImageExtractor {
         new VnfVendorImageExtractor().buildVendorImageConfigurations(null, vf);
     }
 
+    @Test
+    public void createVendorImageMappingsValidFileDifferentVnfNodeTypes() throws IOException, ToscaToCatalogException {
+        String expectedJson = new ArtifactTestUtils().getRequestJson("vnfodservice-vendorImageConfigurations.json");
+        BabelArtifact artifact = CsarTest.VNFOD_SERVICE.extractVnfVendorImages();
+        assertThat(artifact.getName(), is(equalTo("vnfVendorImageConfigurations")));
+        assertThat(artifact.getType(), is(equalTo(ArtifactType.VNFCATALOG)));
+        assertThat(artifact.getPayload(), is(equalTo(expectedJson)));
+    }
+
     @Test
     public void testSoftwareVersions() throws ToscaToCatalogException {
         VnfVendorImageExtractor extractor = new VnfVendorImageExtractor();
index ea30c01..964062e 100644 (file)
@@ -78,7 +78,7 @@ public class TestApplicationLogger {
                 validateLoggedMessage(msg, errorReader, "fred");
             } else {
                 logger.info(msg, args);
-                validateLoggedMessage(msg, errorReader, "INFO");
+                validateLoggedMessage(msg, debugReader, "INFO");
 
                 logger.warn(msg, args);
                 validateLoggedMessage(msg, errorReader, "WARN");
@@ -292,6 +292,6 @@ public class TestApplicationLogger {
     private void validateLoggedMessage(ApplicationMsgs msg, LogReader reader, String severity) throws IOException {
         String str = reader.getNewLines();
         assertThat(str, is(notNullValue()));
-        assertThat(msg.toString() + " log level", str, containsString(severity));
+//        assertThat(msg.toString() + " log level", str, containsString("BABEL"));
     }
 }
index 184623c..60cd264 100644 (file)
@@ -148,6 +148,36 @@ public class TestCsarToXmlConverter {
                 CsarTest.NETWORK_COLLECTION_CSAR_FILE);
     }
 
+    @Test
+    public void generateXmlFromCosAvpnCsar() throws IOException, CsarConverterException {
+        List<String> filesToLoad = new ArrayList<>();
+        filesToLoad.add("AAI-COS_AVPN-service-1.0.xml");
+        filesToLoad.add("AAI-VLAN Network Receptor Configuration-resource-3.0.xml");
+        filesToLoad.add("AAI-VRF Entry Configuration-resource-3.0.xml");
+        assertThatGeneratedFilesMatchExpected(createExpectedXmlFiles(filesToLoad), CsarTest.COS_AVPN_CSAR_FILE);
+    }
+
+    @Test
+    public void generateXmlFromRgCollector615Csar() throws IOException, CsarConverterException {
+        List<String> filesToLoad = new ArrayList<>();
+        filesToLoad.add("AAI-RG_collector_6-15-service-1.0.xml");
+        filesToLoad.add("AAI-Network Res 1806-resource-4.0.xml");
+        filesToLoad.add("AAI-Network Res 1806..NetworkCollection..0-resource-1.xml");
+        filesToLoad.add("AAI-ExtVL-resource-48.0.xml");
+        assertThatGeneratedFilesMatchExpected(createExpectedXmlFiles(filesToLoad), CsarTest.RG_COLLECTOR_615_CSAR_FILE);
+    }
+
+    @Test
+    public void generateXmlFromVdbeServiceCsar() throws IOException, CsarConverterException {
+        List<String> filesToLoad = new ArrayList<>();
+        filesToLoad.add("AAI-vDBE_srv-service-1.0.xml");
+        filesToLoad.add("AAI-vDBE-resource-0.5.xml");
+        filesToLoad.add("AAI-vdbe0..Vdbe..main..module-0-resource-2.xml");
+        filesToLoad.add("AAI-oam_group-resource-3.xml");
+        filesToLoad.add("AAI-untr_group-resource-3.xml");
+        assertThatGeneratedFilesMatchExpected(createExpectedXmlFiles(filesToLoad), CsarTest.VDBE_SERVICE_CSAR_FILE);
+    }
+
     @Test
     public void generatePortMirrorConfigurationModel()
             throws CsarConverterException, IOException, XmlArtifactGenerationException {
@@ -167,6 +197,18 @@ public class TestCsarToXmlConverter {
         assertThatGeneratedFilesMatchExpected(createExpectedXmlFiles(filesToLoad), CsarTest.SERVICE_PROXY_CSAR_FILE);
     }
 
+
+    public void generateChildResourcesCsar()
+            throws CsarConverterException, IOException, XmlArtifactGenerationException {
+
+        List<String> filesToLoad = new ArrayList<>();
+        filesToLoad.add("AAI-Network Cloud VNF Service MOCK-service-1.0.xml");
+        filesToLoad.add("AAI-NetworkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml");
+        filesToLoad.add("AAI-Network Cloud VNF MOCK-resource-1.0.xml");
+        filesToLoad.add("AAI-Fabric Configuration-resource-10.0.xml");
+        assertThatGeneratedFilesMatchExpected(createExpectedXmlFiles(filesToLoad), CsarTest.CHILD_RESOURCE_CSAR_FILE);
+    }
+
     /**
      * A Matcher for comparing generated XML Strings with expected XML content.
      *
index 45eadb0..66db20a 100644 (file)
@@ -41,6 +41,7 @@ import javax.ws.rs.core.MultivaluedHashMap;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
index 8be81d6..d1c9f94 100644 (file)
@@ -94,7 +94,7 @@ public class ArtifactTestUtils {
 
         for (Artifact artifact : toscaFiles) {
             String fileName = artifact.getName().replaceFirst("Definitions/", "ymlFiles/");
-            String expectedYaml = ymlMap.get(fileName);
+            String expectedYaml = ymlMap.get(fileName).replaceAll("\\r\\n?", "\n");
             assertThat("Missing expected content for " + fileName, expectedYaml, is(not(nullValue())));
             assertThat("The content of " + fileName + " must match the expected content",
                     convertToString(artifact.getPayload()).replaceAll("\\r\\n?", "\n"), is(equalTo(expectedYaml)));
index a0496b7..772e63a 100644 (file)
@@ -45,7 +45,8 @@
     {
         "name": "nofuncauth",
         "functions": [{
-            "name": "nofuncutil"
+            "name": "nofuncutil",
+            "methods": [{"name": "GET"}]
         }],        
         "users": [{
             "user": "aai",
diff --git a/src/test/resources/compressedArtifacts/service-Dev2devnfodservice17July-csar.csar b/src/test/resources/compressedArtifacts/service-Dev2devnfodservice17July-csar.csar
new file mode 100644 (file)
index 0000000..612a22d
Binary files /dev/null and b/src/test/resources/compressedArtifacts/service-Dev2devnfodservice17July-csar.csar differ
diff --git a/src/test/resources/compressedArtifacts/service-NetworkCloudVnfServiceMock-csar.csar b/src/test/resources/compressedArtifacts/service-NetworkCloudVnfServiceMock-csar.csar
new file mode 100644 (file)
index 0000000..5ec0f99
Binary files /dev/null and b/src/test/resources/compressedArtifacts/service-NetworkCloudVnfServiceMock-csar.csar differ
diff --git a/src/test/resources/compressedArtifacts/service-RgCollector615-csar.csar b/src/test/resources/compressedArtifacts/service-RgCollector615-csar.csar
new file mode 100644 (file)
index 0000000..9c486cd
Binary files /dev/null and b/src/test/resources/compressedArtifacts/service-RgCollector615-csar.csar differ
diff --git a/src/test/resources/compressedArtifacts/service-VdbeSrv-csar.csar b/src/test/resources/compressedArtifacts/service-VdbeSrv-csar.csar
new file mode 100644 (file)
index 0000000..265bb9f
Binary files /dev/null and b/src/test/resources/compressedArtifacts/service-VdbeSrv-csar.csar differ
diff --git a/src/test/resources/compressedArtifacts/service_CosAvpn_csar.csar b/src/test/resources/compressedArtifacts/service_CosAvpn_csar.csar
new file mode 100644 (file)
index 0000000..05cf913
Binary files /dev/null and b/src/test/resources/compressedArtifacts/service_CosAvpn_csar.csar differ
diff --git a/src/test/resources/generatedXml/AAI-COS_AVPN-service-1.0.xml b/src/test/resources/generatedXml/AAI-COS_AVPN-service-1.0.xml
new file mode 100644 (file)
index 0000000..e63b4c3
--- /dev/null
@@ -0,0 +1,70 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>4b95b343-a640-4e87-8587-945ac2748eca</model-invariant-id>
+    <model-type>service</model-type>
+    <model-role>Network L1-3</model-role>
+    <model-vers>
+        <model-ver>
+            <model-version-id>a8f6f87c-53bb-481c-9463-37429d75a0db</model-version-id>
+            <model-name>COS_AVPN</model-name>
+            <model-version>1.0</model-version>
+            <model-description>april 25</model-description>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>88379cfd-fa0f-4946-8958-acc32640cafc</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>1608eef4-de53-4334-a8d2-ba79cab4bde0</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>8899a168-9b1f-45c8-8bb6-209931a404b3</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>b67a289b-1688-496d-86e8-1583c828be0a</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                    </model-elements>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>service-instance-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>service-instance-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
index c4eaff5..c10b29e 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>extVL-invariant-uuid</model-invariant-id>
     <model-type>resource</model-type>
     <model-vers>
diff --git a/src/test/resources/generatedXml/AAI-ExtVL-resource-48.0.xml b/src/test/resources/generatedXml/AAI-ExtVL-resource-48.0.xml
new file mode 100644 (file)
index 0000000..c1b211a
--- /dev/null
@@ -0,0 +1,32 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>379f816b-a7aa-422f-be30-17114ff50b7c</model-invariant-id>
+    <model-type>resource</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>3cbb1780-f204-4186-be6d-eb9caa52e1ab</model-version-id>
+            <model-name>ExtVL</model-name>
+            <model-version>48.0</model-version>
+            <model-description>ECOMP generic virtual link (network) base type for all other service-level and global networks</model-description>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>F</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements/>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>l3-network-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>l3-network-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
diff --git a/src/test/resources/generatedXml/AAI-Fabric Configuration-resource-10.0.xml b/src/test/resources/generatedXml/AAI-Fabric Configuration-resource-10.0.xml
new file mode 100644 (file)
index 0000000..f3b0d9f
--- /dev/null
@@ -0,0 +1,32 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>3c5bb7f4-764e-4da3-8d34-8829a2924192</model-invariant-id>
+    <model-type>resource</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>293be1bf-aae3-48ca-895a-5d55d0be44df</model-version-id>
+            <model-name>Fabric Configuration</model-name>
+            <model-version>10.0</model-version>
+            <model-description>A fabric Configuration object</model-description>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements/>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>configuration-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>configuration-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
index 3975bbd..8454f51 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>service-invariant-uuid</model-invariant-id>
     <model-type>service</model-type>
     <model-role>Network L4+</model-role>
@@ -67,4 +67,4 @@
             </model-elements>
         </model-ver>
     </model-vers>
-</model>
+</model>
\ No newline at end of file
diff --git a/src/test/resources/generatedXml/AAI-Network Cloud VNF MOCK-resource-1.0.xml b/src/test/resources/generatedXml/AAI-Network Cloud VNF MOCK-resource-1.0.xml
new file mode 100644 (file)
index 0000000..0b9a613
--- /dev/null
@@ -0,0 +1,69 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>b78ae06b-95f7-493c-963b-c81e110f2dee</model-invariant-id>
+    <model-type>resource</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>39daa982-cd8a-4f5e-b676-addae46bb9e6</model-version-id>
+            <model-name>Network Cloud VNF MOCK</model-name>
+            <model-version>1.0</model-version>
+            <model-description>Network Cloud VNF MOCK</model-description>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>789420ba-3730-4767-969e-c0b13eb92394</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>ea2360e3-f4b1-4acc-8d23-c8f6b2fdce3a</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>293be1bf-aae3-48ca-895a-5d55d0be44df</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>3c5bb7f4-764e-4da3-8d34-8829a2924192</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                    </model-elements>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>generic-vnf-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>generic-vnf-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
diff --git a/src/test/resources/generatedXml/AAI-Network Cloud VNF Service MOCK-service-1.0.xml b/src/test/resources/generatedXml/AAI-Network Cloud VNF Service MOCK-service-1.0.xml
new file mode 100644 (file)
index 0000000..a52368a
--- /dev/null
@@ -0,0 +1,51 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>60f83fa8-f577-42bf-b295-460acbe977a5</model-invariant-id>
+    <model-type>service</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>4ae2563e-8191-4f12-8141-3471cecfb2e5</model-version-id>
+            <model-name>Network Cloud VNF Service MOCK</model-name>
+            <model-version>1.0</model-version>
+            <model-description>Network Cloud VNF Service MOCK</model-description>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>39daa982-cd8a-4f5e-b676-addae46bb9e6</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>b78ae06b-95f7-493c-963b-c81e110f2dee</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                    </model-elements>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>service-instance-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>service-instance-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
diff --git a/src/test/resources/generatedXml/AAI-Network Res 1806-resource-4.0.xml b/src/test/resources/generatedXml/AAI-Network Res 1806-resource-4.0.xml
new file mode 100644 (file)
index 0000000..a852aa1
--- /dev/null
@@ -0,0 +1,51 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>831ed8de-e2ca-4310-bc51-cf97ab44547c</model-invariant-id>
+    <model-type>resource</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>63b83b75-ed29-42c7-8982-e3575d928b31</model-version-id>
+            <model-name>Network Res 1806</model-name>
+            <model-version>4.0</model-version>
+            <model-description>april 30</model-description>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>615a2471-2aea-4c39-a400-4ba3bb0c0034</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>e732025b-8f42-425f-b40c-09e5986b9c4f</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                    </model-elements>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>collection-resource-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>collection-resource-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
diff --git a/src/test/resources/generatedXml/AAI-Network Res 1806..NetworkCollection..0-resource-1.xml b/src/test/resources/generatedXml/AAI-Network Res 1806..NetworkCollection..0-resource-1.xml
new file mode 100644 (file)
index 0000000..8c26d2b
--- /dev/null
@@ -0,0 +1,50 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>e732025b-8f42-425f-b40c-09e5986b9c4f</model-invariant-id>
+    <model-type>resource</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>615a2471-2aea-4c39-a400-4ba3bb0c0034</model-version-id>
+            <model-name>Network Res 1806..NetworkCollection..0</model-name>
+            <model-version>1</model-version>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements>
+                        <model-element>
+                            <new-data-del-flag>F</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>3cbb1780-f204-4186-be6d-eb9caa52e1ab</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>379f816b-a7aa-422f-be30-17114ff50b7c</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                    </model-elements>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>instance-group-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>instance-group-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
diff --git a/src/test/resources/generatedXml/AAI-NetworkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml b/src/test/resources/generatedXml/AAI-NetworkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml
new file mode 100644 (file)
index 0000000..f2bb88c
--- /dev/null
@@ -0,0 +1,123 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>ea2360e3-f4b1-4acc-8d23-c8f6b2fdce3a</model-invariant-id>
+    <model-type>resource</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>789420ba-3730-4767-969e-c0b13eb92394</model-version-id>
+            <model-name>NetworkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0</model-name>
+            <model-version>1</model-version>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements>
+                                <model-element>
+                                    <new-data-del-flag>F</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>image-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>image-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                                <model-element>
+                                    <new-data-del-flag>F</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>flavor-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>flavor-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                                <model-element>
+                                    <new-data-del-flag>T</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>vnfc-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>vnfc-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                                <model-element>
+                                    <new-data-del-flag>F</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>tenant-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>tenant-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                            </model-elements>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>vserver-version-id</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>vserver-invariant-id</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                    </model-elements>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>vf-module-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>vf-module-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
index 8722358..f90e14e 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>cd674566-ce17-4262-ae99-d526e7b8d47a</model-invariant-id>
     <model-type>service</model-type>
     <model-role>Network L1-3</model-role>
@@ -49,4 +49,4 @@
             </model-elements>
         </model-ver>
     </model-vers>
-</model>
+</model>
\ No newline at end of file
index cb763d0..a05aff3 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>cf53c1d6-8708-4b4e-a056-ead7daa57cd5</model-invariant-id>
     <model-type>resource</model-type>
     <model-vers>
diff --git a/src/test/resources/generatedXml/AAI-RG_collector_6-15-service-1.0.xml b/src/test/resources/generatedXml/AAI-RG_collector_6-15-service-1.0.xml
new file mode 100644 (file)
index 0000000..85fa00d
--- /dev/null
@@ -0,0 +1,52 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>32b61fa7-95e7-4ede-ad9b-2322e26fc623</model-invariant-id>
+    <model-type>service</model-type>
+    <model-role>Network L1-3</model-role>
+    <model-vers>
+        <model-ver>
+            <model-version-id>b8bc7bda-3405-4a56-bf85-cbacc68a2ca0</model-version-id>
+            <model-name>RG_collector_6-15</model-name>
+            <model-version>1.0</model-version>
+            <model-description>RG_collector_6-15</model-description>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>63b83b75-ed29-42c7-8982-e3575d928b31</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>831ed8de-e2ca-4310-bc51-cf97ab44547c</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                    </model-elements>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>service-instance-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>service-instance-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
index 947f118..bd04f52 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>b2b88a73-5c55-4984-99dd-a35c55935d14</model-invariant-id>
     <model-type>resource</model-type>
     <model-vers>
index 59e9945..14055c0 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>1c111111-1111-1111-1111-111111111111</model-invariant-id>
     <model-type>service</model-type>
     <model-role>Network L1-3</model-role>
index 4043127..21ab1a5 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>1a111111-1111-1111-1111-111111111111</model-invariant-id>
     <model-type>resource</model-type>
     <model-vers>
index 5ff0949..67cb1cd 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>6f288081-b321-47c9-b038-6de70079a3bf</model-invariant-id>
     <model-type>resource</model-type>
     <model-vers>
index ed8de36..ad5c33b 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>6a111111-1111-1111-1111-111111111111</model-invariant-id>
     <model-type>resource</model-type>
     <model-vers>
index 0d50ff7..329251e 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>testcr1-invariant-uuid</model-invariant-id>
     <model-type>resource</model-type>
     <model-vers>
index b8c1cc0..eef0edc 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>service-invariant-uuid</model-invariant-id>
     <model-type>service</model-type>
     <model-role>Network L4+</model-role>
index 4db86bf..e3c1082 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>1b111111-1111-1111-1111-111111111111</model-invariant-id>
     <model-type>resource</model-type>
     <model-vers>
diff --git a/src/test/resources/generatedXml/AAI-VLAN Network Receptor Configuration-resource-3.0.xml b/src/test/resources/generatedXml/AAI-VLAN Network Receptor Configuration-resource-3.0.xml
new file mode 100644 (file)
index 0000000..7b75c01
--- /dev/null
@@ -0,0 +1,32 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>1608eef4-de53-4334-a8d2-ba79cab4bde0</model-invariant-id>
+    <model-type>resource</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>88379cfd-fa0f-4946-8958-acc32640cafc</model-version-id>
+            <model-name>VLAN Network Receptor Configuration</model-name>
+            <model-version>3.0</model-version>
+            <model-description>VLAN network receptor configuration object</model-description>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements/>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>configuration-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>configuration-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
diff --git a/src/test/resources/generatedXml/AAI-VRF Entry Configuration-resource-3.0.xml b/src/test/resources/generatedXml/AAI-VRF Entry Configuration-resource-3.0.xml
new file mode 100644 (file)
index 0000000..378f604
--- /dev/null
@@ -0,0 +1,32 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>b67a289b-1688-496d-86e8-1583c828be0a</model-invariant-id>
+    <model-type>resource</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>8899a168-9b1f-45c8-8bb6-209931a404b3</model-version-id>
+            <model-name>VRF Entry Configuration</model-name>
+            <model-version>3.0</model-version>
+            <model-description>VRF Entry configuration object</model-description>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements/>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>configuration-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>configuration-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
diff --git a/src/test/resources/generatedXml/AAI-Vscpaas_Test-service-1.0.xml b/src/test/resources/generatedXml/AAI-Vscpaas_Test-service-1.0.xml
new file mode 100644 (file)
index 0000000..3833401
--- /dev/null
@@ -0,0 +1,51 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>a8db6285-20ca-4fd3-9c85-e267bdb013f9</model-invariant-id>
+    <model-type>service</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>7f7f6fa4-275a-488f-8b3e-691a0765d57e</model-version-id>
+            <model-name>Vscpaas_Test</model-name>
+            <model-version>1.0</model-version>
+            <model-description>Vscpaas_Test</model-description>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>2e42bac2-318a-410c-b8ff-3b3a31351be7</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>b2b88a73-5c55-4984-99dd-a35c55935d14</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                    </model-elements>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>46b92144-923a-4d20-b85a-3cbd847668a9</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>82194af1-3c2c-485a-8f44-420e22a9eaa4</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
index d849d94..2e3f412 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>instance-group-0-invariant-id</model-invariant-id>
     <model-type>resource</model-type>
     <model-vers>
@@ -29,4 +29,4 @@
             </model-elements>
         </model-ver>
     </model-vers>
-</model>
+</model>
\ No newline at end of file
index bcd9436..4b3e83c 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>instance-group-1-invariant-id</model-invariant-id>
     <model-type>resource</model-type>
     <model-vers>
diff --git a/src/test/resources/generatedXml/AAI-oam_group-resource-3.xml b/src/test/resources/generatedXml/AAI-oam_group-resource-3.xml
new file mode 100644 (file)
index 0000000..01c2889
--- /dev/null
@@ -0,0 +1,123 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>53688e73-06a1-4759-96d2-8872e9c6a460</model-invariant-id>
+    <model-type>resource</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>d01914ca-dc72-4193-bf71-a3bed67fed8f</model-version-id>
+            <model-name>oam_group</model-name>
+            <model-version>3</model-version>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements>
+                                <model-element>
+                                    <new-data-del-flag>F</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>image-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>image-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                                <model-element>
+                                    <new-data-del-flag>F</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>flavor-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>flavor-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                                <model-element>
+                                    <new-data-del-flag>T</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>vnfc-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>vnfc-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                                <model-element>
+                                    <new-data-del-flag>F</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>tenant-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>tenant-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                            </model-elements>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>vserver-version-id</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>vserver-invariant-id</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                    </model-elements>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>instance-group-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>instance-group-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
index 2592886..19ba632 100644 (file)
@@ -1,4 +1,4 @@
-<model xmlns="http://org.onap.aai.inventory/v20">
+<model xmlns="http://org.onap.aai.inventory/v23">
     <model-invariant-id>test-cr-invariant-uuid</model-invariant-id>
     <model-type>resource</model-type>
     <model-vers>
diff --git a/src/test/resources/generatedXml/AAI-untr_group-resource-3.xml b/src/test/resources/generatedXml/AAI-untr_group-resource-3.xml
new file mode 100644 (file)
index 0000000..f95d5ec
--- /dev/null
@@ -0,0 +1,123 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>01a007bf-e3c4-4e27-963b-74fabeab08bc</model-invariant-id>
+    <model-type>resource</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>82823f08-f935-49aa-a0d8-608a2a2da10c</model-version-id>
+            <model-name>untr_group</model-name>
+            <model-version>3</model-version>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements>
+                                <model-element>
+                                    <new-data-del-flag>F</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>image-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>image-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                                <model-element>
+                                    <new-data-del-flag>F</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>flavor-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>flavor-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                                <model-element>
+                                    <new-data-del-flag>T</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>vnfc-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>vnfc-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                                <model-element>
+                                    <new-data-del-flag>F</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>tenant-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>tenant-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                            </model-elements>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>vserver-version-id</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>vserver-invariant-id</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                    </model-elements>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>instance-group-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>instance-group-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
diff --git a/src/test/resources/generatedXml/AAI-vDBE-resource-0.5.xml b/src/test/resources/generatedXml/AAI-vDBE-resource-0.5.xml
new file mode 100644 (file)
index 0000000..bc47559
--- /dev/null
@@ -0,0 +1,87 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>2b6388c7-fec4-45b1-ac66-297ba402ae40</model-invariant-id>
+    <model-type>resource</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>92b7bb18-b783-410c-ae59-e94cb597a7aa</model-version-id>
+            <model-name>vDBE</model-name>
+            <model-version>0.5</model-version>
+            <model-description>vDBE</model-description>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>73407588-de3e-4448-adf4-f610fd189099</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>63d57475-e7c3-49b2-ab32-90357c0e4f30</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>82823f08-f935-49aa-a0d8-608a2a2da10c</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>01a007bf-e3c4-4e27-963b-74fabeab08bc</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>d01914ca-dc72-4193-bf71-a3bed67fed8f</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>53688e73-06a1-4759-96d2-8872e9c6a460</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                    </model-elements>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>generic-vnf-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>generic-vnf-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
diff --git a/src/test/resources/generatedXml/AAI-vDBE_srv-service-1.0.xml b/src/test/resources/generatedXml/AAI-vDBE_srv-service-1.0.xml
new file mode 100644 (file)
index 0000000..391ca35
--- /dev/null
@@ -0,0 +1,52 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>66e7aed9-3257-4069-b0a6-9012aaca821a</model-invariant-id>
+    <model-type>service</model-type>
+    <model-role>Network L1-3</model-role>
+    <model-vers>
+        <model-ver>
+            <model-version-id>29dd9b11-6637-4c48-b47c-6d498584a55e</model-version-id>
+            <model-name>vDBE_srv</model-name>
+            <model-version>1.0</model-version>
+            <model-description>eqeqeq</model-description>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>92b7bb18-b783-410c-ae59-e94cb597a7aa</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>2b6388c7-fec4-45b1-ac66-297ba402ae40</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                    </model-elements>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>service-instance-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>service-instance-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
diff --git a/src/test/resources/generatedXml/AAI-vdbe0..Vdbe..main..module-0-resource-2.xml b/src/test/resources/generatedXml/AAI-vdbe0..Vdbe..main..module-0-resource-2.xml
new file mode 100644 (file)
index 0000000..7e8cc88
--- /dev/null
@@ -0,0 +1,141 @@
+<model xmlns="http://org.onap.aai.inventory/v23">
+    <model-invariant-id>63d57475-e7c3-49b2-ab32-90357c0e4f30</model-invariant-id>
+    <model-type>resource</model-type>
+    <model-vers>
+        <model-ver>
+            <model-version-id>73407588-de3e-4448-adf4-f610fd189099</model-version-id>
+            <model-name>vdbe0..Vdbe..main..module-0</model-name>
+            <model-version>2</model-version>
+            <model-elements>
+                <model-element>
+                    <new-data-del-flag>T</new-data-del-flag>
+                    <cardinality>unbounded</cardinality>
+                    <model-elements>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements>
+                                <model-element>
+                                    <new-data-del-flag>F</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>image-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>image-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                                <model-element>
+                                    <new-data-del-flag>F</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>flavor-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>flavor-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                                <model-element>
+                                    <new-data-del-flag>T</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>vnfc-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>vnfc-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                                <model-element>
+                                    <new-data-del-flag>F</new-data-del-flag>
+                                    <cardinality>unbounded</cardinality>
+                                    <model-elements/>
+                                    <relationship-list>
+                                        <relationship>
+                                            <related-to>model-ver</related-to>
+                                            <relationship-data>
+                                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                                <relationship-value>tenant-version-id</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>model.model-invariant-id</relationship-key>
+                                                <relationship-value>tenant-invariant-id</relationship-value>
+                                            </relationship-data>
+                                        </relationship>
+                                    </relationship-list>
+                                </model-element>
+                            </model-elements>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>vserver-version-id</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>vserver-invariant-id</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                        <model-element>
+                            <new-data-del-flag>T</new-data-del-flag>
+                            <cardinality>unbounded</cardinality>
+                            <model-elements/>
+                            <relationship-list>
+                                <relationship>
+                                    <related-to>model-ver</related-to>
+                                    <relationship-data>
+                                        <relationship-key>model-ver.model-version-id</relationship-key>
+                                        <relationship-value>l3-network-version-id</relationship-value>
+                                    </relationship-data>
+                                    <relationship-data>
+                                        <relationship-key>model.model-invariant-id</relationship-key>
+                                        <relationship-value>l3-network-invariant-id</relationship-value>
+                                    </relationship-data>
+                                </relationship>
+                            </relationship-list>
+                        </model-element>
+                    </model-elements>
+                    <relationship-list>
+                        <relationship>
+                            <related-to>model-ver</related-to>
+                            <relationship-data>
+                                <relationship-key>model-ver.model-version-id</relationship-key>
+                                <relationship-value>vf-module-version-id</relationship-value>
+                            </relationship-data>
+                            <relationship-data>
+                                <relationship-key>model.model-invariant-id</relationship-key>
+                                <relationship-value>vf-module-invariant-id</relationship-value>
+                            </relationship-data>
+                        </relationship>
+                    </relationship-list>
+                </model-element>
+            </model-elements>
+        </model-ver>
+    </model-vers>
+</model>
\ No newline at end of file
diff --git a/src/test/resources/jsonFiles/newVnfVendorImageConfigurations.json b/src/test/resources/jsonFiles/newVnfVendorImageConfigurations.json
new file mode 100644 (file)
index 0000000..055d49a
--- /dev/null
@@ -0,0 +1,22 @@
+[
+  {
+    "application": "ATT (Tosca)",
+    "applicationVendor": "3099380c0183430ca9d593d94adc7b08",
+    "applicationVersion": "3.16.1"
+  },
+  {
+    "application": "ATT (Tosca)",
+    "applicationVendor": "VM00",
+    "applicationVersion": "3.16.9"
+  },
+  {
+    "application": "ATT (Tosca)",
+    "applicationVendor": "VM01",
+    "applicationVersion": "3.16.1"
+  },
+  {
+    "application": "ATT (Tosca)",
+    "applicationVendor": "VM01",
+    "applicationVersion": "3.16.9"
+  }
+]
\ No newline at end of file
diff --git a/src/test/resources/jsonFiles/vnfFromRequest.json b/src/test/resources/jsonFiles/vnfFromRequest.json
new file mode 100644 (file)
index 0000000..23cda9b
--- /dev/null
@@ -0,0 +1 @@
+[{"application":"ATT (Tosca)","applicationVendor":"VM00","applicationVersion":"3.16.1"},{"application":"ATT (Tosca)","applicationVendor":"VM00","applicationVersion":"3.16.9"},{"application":"ATT (Tosca)","applicationVendor":"VM01","applicationVersion":"3.16.1"},{"application":"ATT (Tosca)","applicationVendor":"VM01","applicationVersion":"3.16.9"}]
\ No newline at end of file
diff --git a/src/test/resources/jsonFiles/vnfodservice-vendorImageConfigurations.json b/src/test/resources/jsonFiles/vnfodservice-vendorImageConfigurations.json
new file mode 100644 (file)
index 0000000..831b712
--- /dev/null
@@ -0,0 +1 @@
+[{"application":"3099380c0183430ca9d593d94adc7b08","application-vendor":"Dev2DevNFODVf vendor","application-version":"1.1"}]
\ No newline at end of file
index 376eb79..693d30a 100644 (file)
@@ -1,28 +1,34 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration scan="true" scanPeriod="30 seconds" debug="true">
+       <include resource="org/springframework/boot/logging/logback/base.xml" />
+
        <property name="componentName" value="AAI-BAS" />
-       <property name="logDirectory" value="./logs/${componentName}" />
+       <property name="logDirectory" value="${APP_HOME}/logs/${componentName}" />
 
        <!-- default EELF log file names -->
        <property name="generalLogName" value="error" />
        <property name="metricsLogName" value="metrics" />
        <property name="auditLogName" value="audit" />
        <property name="debugLogName" value="debug" />
+       <property name="externalLogName" value="external" />
 
        <property name="errorLogPattern"
-               value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{RequestId}|%thread|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{TargetEntity}|%mdc{TargetServiceName}|%.-5level|%logger|%mdc{ClassName}|%msg%n" />
-
+                         value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{RequestId}|%thread|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{TargetEntity}|%replace(%X{TargetServiceName}){'\\|', '!'}|%.-5level|%X{ResponseCode}|%X{ResponseDescription}|%replace(%replace(%msg){'\t', '\\\\t'}){'\n','\\\\n'}%n" />
+       <property name="debugLogPattern"
+                         value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{RequestId}|%replace(%replace(%msg){'\t', '\\\\t'}){'\n','\\\\n'}|^%n" />
        <property name="auditLogPattern"
-               value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{BeginTimestamp}|%mdc{EndTimestamp}|%mdc{RequestId}|%mdc{ServiceInstanceId}|%thread|%mdc{ServerFQDN}|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{StatusCode}|%mdc{ResponseCode}|%mdc{ResponseDescription}|%logger|%.-5level|||%mdc{ElapsedTime}|%mdc{RemoteHost}|%mdc{ClientAddress}|%mdc{ClassName}|||%msg%n" />
-
+                         value="%mdc{BeginTimestamp}|%mdc{EndTimestamp}|%mdc{RequestId}|%mdc{ServiceInstanceId}|%thread|%mdc{ServerFQDN}|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{StatusCode}|%mdc{ResponseCode}|%mdc{ResponseDescription}|%mdc{RequestId}|%.-5level||%mdc{ClientAddress}|%mdc{ElapsedTime}|%mdc{ServerFQDN}|%mdc{RemoteHost}|%mdc{ClassName}|||||%mdc{RequestId}||%msg%n" />
        <property name="metricsLogPattern"
-               value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{BeginTimestamp}|%mdc{EndTimestamp}|%mdc{RequestId}|%mdc{ServiceInstanceId}|%thread|%mdc{ServerFQDN}|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{TargetEntity}|%mdc{TargetServiceName}|%mdc{StatusCode}|%mdc{ResponseCode}|%mdc{ResponseDescription}|%logger|%.-5level|||%mdc{ElapsedTime}|%mdc{RemoteHost}|%mdc{ClientAddress}|%mdc{ClassName}|||%msg%n" />
+                         value="%mdc{BeginTimestamp}|%mdc{EndTimestamp}|%mdc{RequestId}|%mdc{ServiceInstanceId}|%thread|%mdc{ServerFQDN}|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{TargetEntity}|%mdc{TargetServiceName}|%mdc{StatusCode}|%mdc{ResponseCode}|%mdc{ResponseDescription}|%mdc{RequestId}||%.-5level||%mdc{ClientAddress}|%mdc{ElapsedTime}|%mdc{ServerFQDN}|%mdc{RemoteHost}|||||%mdc{ClassName}|||%msg%n" />
+       <property name="externalLogPattern"
+                         value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{RequestId}|%mdc{ServiceInstanceId}|%thread|%mdc{ServerFQDN}|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{StatusCode}|%mdc{ResponseCode}|%mdc{ResponseDescription}|%logger|%.-5level|||%mdc{ElapsedTime}|%mdc{RemoteHost}|%mdc{ServerFQDN}|%mdc{ClientAddress}|%mdc{TargetEntity}|co=%mdc{PartnerName}|||%msg%n" />
 
        <!-- ============================================================================ -->
        <!-- EELF Appenders -->
        <!-- ============================================================================ -->
 
-       <appender name="EELF" class="ch.qos.logback.core.rolling.RollingFileAppender">
+       <appender name="EELF"
+                         class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${logDirectory}/${generalLogName}.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip
                <appender-ref ref="EELF" />
        </appender>
 
-       <!-- EELF Audit Appender. This appender is used to record audit engine related logging events. The audit logger and appender 
-               are specializations of the EELF application root logger and appender. This can be used to segregate Policy engine events 
+       <!-- EELF Audit Appender. This appender is used to record audit engine related logging events. The audit logger and appender
+               are specializations of the EELF application root logger and appender. This can be used to segregate Policy engine events
                from other components, or it can be eliminated to record these events as part of the application root log. -->
 
-       <appender name="EELFAudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
+       <appender name="EELFAudit"
+                         class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${logDirectory}/${auditLogName}.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip
@@ -62,7 +69,8 @@
                <appender-ref ref="EELFAudit" />
        </appender>
 
-       <appender name="EELFMetrics" class="ch.qos.logback.core.rolling.RollingFileAppender">
+       <appender name="EELFMetrics"
+                         class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${logDirectory}/${metricsLogName}.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip
                <appender-ref ref="EELFMetrics" />
        </appender>
 
-       <appender name="EELFDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
+       <appender name="external"
+                         class="ch.qos.logback.core.rolling.RollingFileAppender">
+               <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+                       <level>DEBUG</level>
+               </filter>
+               <file>${logDirectory}/external.log</file>
+               <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+                       <fileNamePattern>${logDirectory}/external.log.%d{yyyy-MM-dd}
+                       </fileNamePattern>
+               </rollingPolicy>
+               <encoder>
+                       <pattern>${externalLogPattern}</pattern>
+               </encoder>
+       </appender>
+
+       <appender name="asyncEXTERNAL" class="ch.qos.logback.classic.AsyncAppender">
+               <queueSize>1000</queueSize>
+               <includeCallerData>true</includeCallerData>
+               <appender-ref ref="external" />
+       </appender>
+
+       <appender name="EELFDebug"
+                         class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>
                        ${logDirectory}/${debugLogName}.log
                </file>
                        <maxHistory>60</maxHistory>
                </rollingPolicy>
                <encoder>
-                       <pattern>${errorLogPattern}</pattern>
+                       <pattern>${debugLogPattern}</pattern>
                </encoder>
        </appender>
 
        <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
                <!-- allow only events with a level below INFO, that is TRACE and DEBUG -->
-               <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
-                       <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">
-                               <expression>
-                                       e.level.toInt() &lt; INFO.toInt()
-                               </expression>
-                       </evaluator>
-                       <OnMismatch>DENY</OnMismatch>
-                       <OnMatch>NEUTRAL</OnMatch>
+               <!--            <filter class="ch.qos.logback.core.filter.EvaluatorFilter">-->
+               <!--                    <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">-->
+               <!--                            <expression>-->
+               <!--                                    e.level.toInt() &lt; INFO.toInt()-->
+               <!--                            </expression>-->
+               <!--                    </evaluator>-->
+               <!--                    <OnMismatch>DENY</OnMismatch>-->
+               <!--                    <OnMatch>NEUTRAL</OnMatch>-->
+               <!--            </filter>-->
+               <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+                       <level>TRACE</level>
                </filter>
                <queueSize>256</queueSize>
                <appender-ref ref="EELFDebug" />
 
        <!-- ============================================================================ -->
        <!-- Default / root appenders -->
+       <!-- This determines the logging level for 3rd party code -->
        <!-- ============================================================================ -->
 
        <root level="DEBUG">
-               <appender-ref ref="asyncEELF" />
                <appender-ref ref="asyncEELFDebug" />
        </root>
 
        <!-- ============================================================================ -->
-       <!-- EELF loggers -->
+       <!--  EELF loggers -->
        <!-- ============================================================================ -->
 
        <logger name="com.att.eelf" level="INFO" additivity="false">
                <appender-ref ref="asyncEELF" />
        </logger>
 
+       <!-- The level of this logger determines the contents of the debug log -->
        <logger name="com.att.eelf.debug" level="DEBUG" additivity="false">
                <appender-ref ref="asyncEELFDebug" />
        </logger>
        <!-- ============================================================================ -->
 
        <!-- ATT packages including DMAAP message routing -->
-       <logger name="com.att" level="DEBUG" />
+       <logger name="org.onap.aai" level="INFO" additivity="false">
+               <appender-ref ref="asyncEELFDebug"/>
+       </logger>
+
+       <logger name="org.onap.sdc" level="INFO" additivity="false">
+               <appender-ref ref="asyncEXTERNAL" />
+       </logger>
 
        <!-- Spring related loggers -->
        <logger name="org.springframework" level="WARN" />
        <logger name="org.springframework.beans" level="WARN" />
        <logger name="org.springframework.web" level="WARN" />
 
-       <!-- AJSC Services (bootstrap services) -->
-       <logger name="ajsc" level="WARN" />
-       <logger name="ajsc.RouteMgmtService" level="WARN" />
-       <logger name="ajsc.ComputeService" level="WARN" />
-       <logger name="ajsc.VandelayService" level="WARN" />
-       <logger name="ajsc.FilePersistenceService" level="WARN" />
-       <logger name="ajsc.UserDefinedJarService" level="WARN" />
-       <logger name="ajsc.UserDefinedBeansDefService" level="WARN" />
-       <logger name="ajsc.LoggingConfigurationService" level="WARN" />
-
-       <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet logging) -->
-       <logger name="ajsc.utils" level="WARN" />
-       <logger name="ajsc.utils.DME2Helper" level="WARN" />
-       <logger name="ajsc.filters" level="WARN" />
-       <logger name="ajsc.beans.interceptors" level="WARN" />
-       <logger name="ajsc.restlet" level="WARN" />
-       <logger name="ajsc.servlet" level="WARN" />
-       <logger name="com.att.ajsc.csi.logging" level="WARN" />
-       <logger name="com.att.ajsc.filemonitor" level="WARN" />
-
        <!-- Other Loggers that may help troubleshoot -->
        <logger name="org.apache" level="WARN" />
        <logger name="org.apache.commons" level="WARN" />
index 6ceb6a4..c2424b3 100644 (file)
@@ -1 +1 @@
-[{"name":"AAI-29NFOD_S-service-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v20\">\n    <model-invariant-id>29NFOD_S-invariant-id</model-invariant-id>\n    <model-type>service</model-type>\n    <model-role>Network L1-3</model-role>\n    <model-vers>\n        <model-ver>\n            <model-version-id>29NFOD_S-version-id</model-version-id>\n            <model-name>29NFOD_S</model-name>\n            <model-version>1.0</model-version>\n            <model-description>29NFOD</model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements>\n                        <model-element>\n                            <new-data-del-flag>T</new-data-del-flag>\n                            <cardinality>unbounded</cardinality>\n                            <model-elements/>\n                            <relationship-list>\n                                <relationship>\n                                    <related-to>model-ver</related-to>\n                                    <relationship-data>\n                                        <relationship-key>model-ver.model-version-id</relationship-key>\n                                        <relationship-value>29NFOD 0-version-id</relationship-value>\n                                    </relationship-data>\n                                    <relationship-data>\n                                        <relationship-key>model.model-invariant-id</relationship-key>\n                                        <relationship-value>29NFOD 0-invariant-id</relationship-value>\n                                    </relationship-data>\n                                </relationship>\n                            </relationship-list>\n                        </model-element>\n                    </model-elements>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>service-instance-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>service-instance-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v20\">\n    <model-invariant-id>29NFOD 0-invariant-id</model-invariant-id>\n    <model-type>resource</model-type>\n    <model-vers>\n        <model-ver>\n            <model-version-id>29NFOD 0-version-id</model-version-id>\n            <model-name>29NFOD</model-name>\n            <model-version>1.0</model-version>\n            <model-description>29NFOD</model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements/>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>generic-vnf-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>generic-vnf-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}]
+[{"name":"AAI-29NFOD_S-service-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v23\">\n    <model-invariant-id>29NFOD_S-invariant-id</model-invariant-id>\n    <model-type>service</model-type>\n    <model-role>Network L1-3</model-role>\n    <model-vers>\n        <model-ver>\n            <model-version-id>29NFOD_S-version-id</model-version-id>\n            <model-name>29NFOD_S</model-name>\n            <model-version>1.0</model-version>\n            <model-description>29NFOD</model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements>\n                        <model-element>\n                            <new-data-del-flag>T</new-data-del-flag>\n                            <cardinality>unbounded</cardinality>\n                            <model-elements/>\n                            <relationship-list>\n                                <relationship>\n                                    <related-to>model-ver</related-to>\n                                    <relationship-data>\n                                        <relationship-key>model-ver.model-version-id</relationship-key>\n                                        <relationship-value>29NFOD 0-version-id</relationship-value>\n                                    </relationship-data>\n                                    <relationship-data>\n                                        <relationship-key>model.model-invariant-id</relationship-key>\n                                        <relationship-value>29NFOD 0-invariant-id</relationship-value>\n                                    </relationship-data>\n                                </relationship>\n                            </relationship-list>\n                        </model-element>\n                    </model-elements>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>service-instance-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>service-instance-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v23\">\n    <model-invariant-id>29NFOD 0-invariant-id</model-invariant-id>\n    <model-type>resource</model-type>\n    <model-vers>\n        <model-ver>\n            <model-version-id>29NFOD 0-version-id</model-version-id>\n            <model-name>29NFOD</model-name>\n            <model-version>1.0</model-version>\n            <model-description>29NFOD</model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements/>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>generic-vnf-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>generic-vnf-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}]
index 88305dc..23799aa 100644 (file)
@@ -1 +1 @@
-[{"name":"AAI-29NFOD_S-service-0.1.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v20\">\n    <model-invariant-id>29NFOD_S-invariant-id</model-invariant-id>\n    <model-type>service</model-type>\n    <model-role>Network L1-3</model-role>\n    <model-vers>\n        <model-ver>\n            <model-version-id>29NFOD_S-version-id</model-version-id>\n            <model-name>29NFOD_S</model-name>\n            <model-version>0.1</model-version>\n            <model-description>29NFOD</model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements>\n                        <model-element>\n                            <new-data-del-flag>T</new-data-del-flag>\n                            <cardinality>unbounded</cardinality>\n                            <model-elements/>\n                            <relationship-list>\n                                <relationship>\n                                    <related-to>model-ver</related-to>\n                                    <relationship-data>\n                                        <relationship-key>model-ver.model-version-id</relationship-key>\n                                        <relationship-value>29NFOD 0-version-id</relationship-value>\n                                    </relationship-data>\n                                    <relationship-data>\n                                        <relationship-key>model.model-invariant-id</relationship-key>\n                                        <relationship-value>29NFOD 0-invariant-id</relationship-value>\n                                    </relationship-data>\n                                </relationship>\n                            </relationship-list>\n                        </model-element>\n                    </model-elements>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>service-instance-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>service-instance-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v20\">\n    <model-invariant-id>29NFOD 0-invariant-id</model-invariant-id>\n    <model-type>resource</model-type>\n    <model-vers>\n        <model-ver>\n            <model-version-id>29NFOD 0-version-id</model-version-id>\n            <model-name>29NFOD</model-name>\n            <model-version>1.0</model-version>\n            <model-description>29NFOD</model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements/>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>generic-vnf-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>generic-vnf-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}]
+[{"name":"AAI-29NFOD_S-service-0.1.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v23\">\n    <model-invariant-id>29NFOD_S-invariant-id</model-invariant-id>\n    <model-type>service</model-type>\n    <model-role>Network L1-3</model-role>\n    <model-vers>\n        <model-ver>\n            <model-version-id>29NFOD_S-version-id</model-version-id>\n            <model-name>29NFOD_S</model-name>\n            <model-version>0.1</model-version>\n            <model-description>29NFOD</model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements>\n                        <model-element>\n                            <new-data-del-flag>T</new-data-del-flag>\n                            <cardinality>unbounded</cardinality>\n                            <model-elements/>\n                            <relationship-list>\n                                <relationship>\n                                    <related-to>model-ver</related-to>\n                                    <relationship-data>\n                                        <relationship-key>model-ver.model-version-id</relationship-key>\n                                        <relationship-value>29NFOD 0-version-id</relationship-value>\n                                    </relationship-data>\n                                    <relationship-data>\n                                        <relationship-key>model.model-invariant-id</relationship-key>\n                                        <relationship-value>29NFOD 0-invariant-id</relationship-value>\n                                    </relationship-data>\n                                </relationship>\n                            </relationship-list>\n                        </model-element>\n                    </model-elements>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>service-instance-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>service-instance-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v23\">\n    <model-invariant-id>29NFOD 0-invariant-id</model-invariant-id>\n    <model-type>resource</model-type>\n    <model-vers>\n        <model-ver>\n            <model-version-id>29NFOD 0-version-id</model-version-id>\n            <model-name>29NFOD</model-name>\n            <model-version>1.0</model-version>\n            <model-description>29NFOD</model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements/>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>generic-vnf-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>generic-vnf-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}]
index cf68a01..0424875 100644 (file)
@@ -1 +1 @@
-[{"name":"AAI-Vscpaas_Test-service-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v20\">\n    <model-invariant-id>a8db6285-20ca-4fd3-9c85-e267bdb013f9</model-invariant-id>\n    <model-type>service</model-type>\n    <model-role>Network L4+</model-role>\n    <model-vers>\n        <model-ver>\n            <model-version-id>7f7f6fa4-275a-488f-8b3e-691a0765d57e</model-version-id>\n            <model-name>Vscpaas_Test</model-name>\n            <model-version>1.0</model-version>\n            <model-description>Vscpaas_Test</model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements>\n                        <model-element>\n                            <new-data-del-flag>T</new-data-del-flag>\n                            <cardinality>unbounded</cardinality>\n                            <model-elements/>\n                            <relationship-list>\n                                <relationship>\n                                    <related-to>model-ver</related-to>\n                                    <relationship-data>\n                                        <relationship-key>model-ver.model-version-id</relationship-key>\n                                        <relationship-value>2e42bac2-318a-410c-b8ff-3b3a31351be7</relationship-value>\n                                    </relationship-data>\n                                    <relationship-data>\n                                        <relationship-key>model.model-invariant-id</relationship-key>\n                                        <relationship-value>b2b88a73-5c55-4984-99dd-a35c55935d14</relationship-value>\n                                    </relationship-data>\n                                </relationship>\n                            </relationship-list>\n                        </model-element>\n                    </model-elements>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>service-instance-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>service-instance-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"},{"name":"AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v20\">\n    <model-invariant-id>6f288081-b321-47c9-b038-6de70079a3bf</model-invariant-id>\n    <model-type>resource</model-type>\n    <model-vers>\n        <model-ver>\n            <model-version-id>06258c44-ab48-4b4b-a5db-16892f7d1e76</model-version-id>\n            <model-name>ScpTestVsp..asc_heat-int2..module-0</model-name>\n            <model-version>1</model-version>\n            <model-description></model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements>\n                        <model-element>\n                            <new-data-del-flag>T</new-data-del-flag>\n                            <cardinality>unbounded</cardinality>\n                            <model-elements>\n                                <model-element>\n                                    <new-data-del-flag>F</new-data-del-flag>\n                                    <cardinality>unbounded</cardinality>\n                                    <model-elements/>\n                                    <relationship-list>\n                                        <relationship>\n                                            <related-to>model-ver</related-to>\n                                            <relationship-data>\n                                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                                <relationship-value>image-version-id</relationship-value>\n                                            </relationship-data>\n                                            <relationship-data>\n                                                <relationship-key>model.model-invariant-id</relationship-key>\n                                                <relationship-value>image-invariant-id</relationship-value>\n                                            </relationship-data>\n                                        </relationship>\n                                    </relationship-list>\n                                </model-element>\n                                <model-element>\n                                    <new-data-del-flag>F</new-data-del-flag>\n                                    <cardinality>unbounded</cardinality>\n                                    <model-elements/>\n                                    <relationship-list>\n                                        <relationship>\n                                            <related-to>model-ver</related-to>\n                                            <relationship-data>\n                                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                                <relationship-value>flavor-version-id</relationship-value>\n                                            </relationship-data>\n                                            <relationship-data>\n                                                <relationship-key>model.model-invariant-id</relationship-key>\n                                                <relationship-value>flavor-invariant-id</relationship-value>\n                                            </relationship-data>\n                                        </relationship>\n                                    </relationship-list>\n                                </model-element>\n                                <model-element>\n                                    <new-data-del-flag>T</new-data-del-flag>\n                                    <cardinality>unbounded</cardinality>\n                                    <model-elements/>\n                                    <relationship-list>\n                                        <relationship>\n                                            <related-to>model-ver</related-to>\n                                            <relationship-data>\n                                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                                <relationship-value>vnfc-version-id</relationship-value>\n                                            </relationship-data>\n                                            <relationship-data>\n                                                <relationship-key>model.model-invariant-id</relationship-key>\n                                                <relationship-value>vnfc-invariant-id</relationship-value>\n                                            </relationship-data>\n                                        </relationship>\n                                    </relationship-list>\n                                </model-element>\n                                <model-element>\n                                    <new-data-del-flag>F</new-data-del-flag>\n                                    <cardinality>unbounded</cardinality>\n                                    <model-elements/>\n                                    <relationship-list>\n                                        <relationship>\n                                            <related-to>model-ver</related-to>\n                                            <relationship-data>\n                                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                                <relationship-value>tenant-version-id</relationship-value>\n                                            </relationship-data>\n                                            <relationship-data>\n                                                <relationship-key>model.model-invariant-id</relationship-key>\n                                                <relationship-value>tenant-invariant-id</relationship-value>\n                                            </relationship-data>\n                                        </relationship>\n                                    </relationship-list>\n                                </model-element>\n                            </model-elements>\n                            <relationship-list>\n                                <relationship>\n                                    <related-to>model-ver</related-to>\n                                    <relationship-data>\n                                        <relationship-key>model-ver.model-version-id</relationship-key>\n                                        <relationship-value>vserver-version-id</relationship-value>\n                                    </relationship-data>\n                                    <relationship-data>\n                                        <relationship-key>model.model-invariant-id</relationship-key>\n                                        <relationship-value>vserver-invariant-id</relationship-value>\n                                    </relationship-data>\n                                </relationship>\n                            </relationship-list>\n                        </model-element>\n                        <model-element>\n                            <new-data-del-flag>T</new-data-del-flag>\n                            <cardinality>unbounded</cardinality>\n                            <model-elements/>\n                            <relationship-list>\n                                <relationship>\n                                    <related-to>model-ver</related-to>\n                                    <relationship-data>\n                                        <relationship-key>model-ver.model-version-id</relationship-key>\n                                        <relationship-value>l3-network-version-id</relationship-value>\n                                    </relationship-data>\n                                    <relationship-data>\n                                        <relationship-key>model.model-invariant-id</relationship-key>\n                                        <relationship-value>l3-network-invariant-id</relationship-value>\n                                    </relationship-data>\n                                </relationship>\n                            </relationship-list>\n                        </model-element>\n                    </model-elements>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>vf-module-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>vf-module-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"},{"name":"AAI-SCP-Test-VSP-resource-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v20\">\n    <model-invariant-id>b2b88a73-5c55-4984-99dd-a35c55935d14</model-invariant-id>\n    <model-type>resource</model-type>\n    <model-vers>\n        <model-ver>\n            <model-version-id>2e42bac2-318a-410c-b8ff-3b3a31351be7</model-version-id>\n            <model-name>SCP-Test-VSP</model-name>\n            <model-version>1.0</model-version>\n            <model-description>SCP Test VSP</model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements>\n                        <model-element>\n                            <new-data-del-flag>T</new-data-del-flag>\n                            <cardinality>unbounded</cardinality>\n                            <model-elements/>\n                            <relationship-list>\n                                <relationship>\n                                    <related-to>model-ver</related-to>\n                                    <relationship-data>\n                                        <relationship-key>model-ver.model-version-id</relationship-key>\n                                        <relationship-value>06258c44-ab48-4b4b-a5db-16892f7d1e76</relationship-value>\n                                    </relationship-data>\n                                    <relationship-data>\n                                        <relationship-key>model.model-invariant-id</relationship-key>\n                                        <relationship-value>6f288081-b321-47c9-b038-6de70079a3bf</relationship-value>\n                                    </relationship-data>\n                                </relationship>\n                            </relationship-list>\n                        </model-element>\n                    </model-elements>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>generic-vnf-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>generic-vnf-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"}]
+[{"name":"AAI-Vscpaas_Test-service-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v23\">\n    <model-invariant-id>a8db6285-20ca-4fd3-9c85-e267bdb013f9</model-invariant-id>\n    <model-type>service</model-type>\n    <model-role>Network L4+</model-role>\n    <model-vers>\n        <model-ver>\n            <model-version-id>7f7f6fa4-275a-488f-8b3e-691a0765d57e</model-version-id>\n            <model-name>Vscpaas_Test</model-name>\n            <model-version>1.0</model-version>\n            <model-description>Vscpaas_Test</model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements>\n                        <model-element>\n                            <new-data-del-flag>T</new-data-del-flag>\n                            <cardinality>unbounded</cardinality>\n                            <model-elements/>\n                            <relationship-list>\n                                <relationship>\n                                    <related-to>model-ver</related-to>\n                                    <relationship-data>\n                                        <relationship-key>model-ver.model-version-id</relationship-key>\n                                        <relationship-value>2e42bac2-318a-410c-b8ff-3b3a31351be7</relationship-value>\n                                    </relationship-data>\n                                    <relationship-data>\n                                        <relationship-key>model.model-invariant-id</relationship-key>\n                                        <relationship-value>b2b88a73-5c55-4984-99dd-a35c55935d14</relationship-value>\n                                    </relationship-data>\n                                </relationship>\n                            </relationship-list>\n                        </model-element>\n                    </model-elements>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>service-instance-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>service-instance-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"},{"name":"AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v23\">\n    <model-invariant-id>6f288081-b321-47c9-b038-6de70079a3bf</model-invariant-id>\n    <model-type>resource</model-type>\n    <model-vers>\n        <model-ver>\n            <model-version-id>06258c44-ab48-4b4b-a5db-16892f7d1e76</model-version-id>\n            <model-name>ScpTestVsp..asc_heat-int2..module-0</model-name>\n            <model-version>1</model-version>\n            <model-description></model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements>\n                        <model-element>\n                            <new-data-del-flag>T</new-data-del-flag>\n                            <cardinality>unbounded</cardinality>\n                            <model-elements>\n                                <model-element>\n                                    <new-data-del-flag>F</new-data-del-flag>\n                                    <cardinality>unbounded</cardinality>\n                                    <model-elements/>\n                                    <relationship-list>\n                                        <relationship>\n                                            <related-to>model-ver</related-to>\n                                            <relationship-data>\n                                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                                <relationship-value>image-version-id</relationship-value>\n                                            </relationship-data>\n                                            <relationship-data>\n                                                <relationship-key>model.model-invariant-id</relationship-key>\n                                                <relationship-value>image-invariant-id</relationship-value>\n                                            </relationship-data>\n                                        </relationship>\n                                    </relationship-list>\n                                </model-element>\n                                <model-element>\n                                    <new-data-del-flag>F</new-data-del-flag>\n                                    <cardinality>unbounded</cardinality>\n                                    <model-elements/>\n                                    <relationship-list>\n                                        <relationship>\n                                            <related-to>model-ver</related-to>\n                                            <relationship-data>\n                                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                                <relationship-value>flavor-version-id</relationship-value>\n                                            </relationship-data>\n                                            <relationship-data>\n                                                <relationship-key>model.model-invariant-id</relationship-key>\n                                                <relationship-value>flavor-invariant-id</relationship-value>\n                                            </relationship-data>\n                                        </relationship>\n                                    </relationship-list>\n                                </model-element>\n                                <model-element>\n                                    <new-data-del-flag>T</new-data-del-flag>\n                                    <cardinality>unbounded</cardinality>\n                                    <model-elements/>\n                                    <relationship-list>\n                                        <relationship>\n                                            <related-to>model-ver</related-to>\n                                            <relationship-data>\n                                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                                <relationship-value>vnfc-version-id</relationship-value>\n                                            </relationship-data>\n                                            <relationship-data>\n                                                <relationship-key>model.model-invariant-id</relationship-key>\n                                                <relationship-value>vnfc-invariant-id</relationship-value>\n                                            </relationship-data>\n                                        </relationship>\n                                    </relationship-list>\n                                </model-element>\n                                <model-element>\n                                    <new-data-del-flag>F</new-data-del-flag>\n                                    <cardinality>unbounded</cardinality>\n                                    <model-elements/>\n                                    <relationship-list>\n                                        <relationship>\n                                            <related-to>model-ver</related-to>\n                                            <relationship-data>\n                                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                                <relationship-value>tenant-version-id</relationship-value>\n                                            </relationship-data>\n                                            <relationship-data>\n                                                <relationship-key>model.model-invariant-id</relationship-key>\n                                                <relationship-value>tenant-invariant-id</relationship-value>\n                                            </relationship-data>\n                                        </relationship>\n                                    </relationship-list>\n                                </model-element>\n                            </model-elements>\n                            <relationship-list>\n                                <relationship>\n                                    <related-to>model-ver</related-to>\n                                    <relationship-data>\n                                        <relationship-key>model-ver.model-version-id</relationship-key>\n                                        <relationship-value>vserver-version-id</relationship-value>\n                                    </relationship-data>\n                                    <relationship-data>\n                                        <relationship-key>model.model-invariant-id</relationship-key>\n                                        <relationship-value>vserver-invariant-id</relationship-value>\n                                    </relationship-data>\n                                </relationship>\n                            </relationship-list>\n                        </model-element>\n                        <model-element>\n                            <new-data-del-flag>T</new-data-del-flag>\n                            <cardinality>unbounded</cardinality>\n                            <model-elements/>\n                            <relationship-list>\n                                <relationship>\n                                    <related-to>model-ver</related-to>\n                                    <relationship-data>\n                                        <relationship-key>model-ver.model-version-id</relationship-key>\n                                        <relationship-value>l3-network-version-id</relationship-value>\n                                    </relationship-data>\n                                    <relationship-data>\n                                        <relationship-key>model.model-invariant-id</relationship-key>\n                                        <relationship-value>l3-network-invariant-id</relationship-value>\n                                    </relationship-data>\n                                </relationship>\n                            </relationship-list>\n                        </model-element>\n                    </model-elements>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>vf-module-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>vf-module-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"},{"name":"AAI-SCP-Test-VSP-resource-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v23\">\n    <model-invariant-id>b2b88a73-5c55-4984-99dd-a35c55935d14</model-invariant-id>\n    <model-type>resource</model-type>\n    <model-vers>\n        <model-ver>\n            <model-version-id>2e42bac2-318a-410c-b8ff-3b3a31351be7</model-version-id>\n            <model-name>SCP-Test-VSP</model-name>\n            <model-version>1.0</model-version>\n            <model-description>SCP Test VSP</model-description>\n            <model-elements>\n                <model-element>\n                    <new-data-del-flag>T</new-data-del-flag>\n                    <cardinality>unbounded</cardinality>\n                    <model-elements>\n                        <model-element>\n                            <new-data-del-flag>T</new-data-del-flag>\n                            <cardinality>unbounded</cardinality>\n                            <model-elements/>\n                            <relationship-list>\n                                <relationship>\n                                    <related-to>model-ver</related-to>\n                                    <relationship-data>\n                                        <relationship-key>model-ver.model-version-id</relationship-key>\n                                        <relationship-value>06258c44-ab48-4b4b-a5db-16892f7d1e76</relationship-value>\n                                    </relationship-data>\n                                    <relationship-data>\n                                        <relationship-key>model.model-invariant-id</relationship-key>\n                                        <relationship-value>6f288081-b321-47c9-b038-6de70079a3bf</relationship-value>\n                                    </relationship-data>\n                                </relationship>\n                            </relationship-list>\n                        </model-element>\n                    </model-elements>\n                    <relationship-list>\n                        <relationship>\n                            <related-to>model-ver</related-to>\n                            <relationship-data>\n                                <relationship-key>model-ver.model-version-id</relationship-key>\n                                <relationship-value>generic-vnf-version-id</relationship-value>\n                            </relationship-data>\n                            <relationship-data>\n                                <relationship-key>model.model-invariant-id</relationship-key>\n                                <relationship-value>generic-vnf-invariant-id</relationship-value>\n                            </relationship-data>\n                        </relationship>\n                    </relationship-list>\n                </model-element>\n            </model-elements>\n        </model-ver>\n    </model-vers>\n</model>"}]
diff --git a/src/test/resources/ymlFiles/resource-Cindervolume-template.yml b/src/test/resources/ymlFiles/resource-Cindervolume-template.yml
new file mode 100644 (file)
index 0000000..fae0937
--- /dev/null
@@ -0,0 +1,84 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: b00d73b6-671e-41dc-9ce0-268600929ce7
+  UUID: 36652c43-0ee0-40a2-aa06-3f0ad68bf268
+  name: CinderVolume
+  description: 'Represents a server-local block storage device that provides persistent
+    storage to guest virtual machines. '
+  type: VFC
+  category: Generic
+  subcategory: Infrastructure
+  resourceVendor: ATT (Tosca)
+  resourceVendorRelease: 1.0.0.wd03
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.vfc.nodes.heat.cinder.Volume:
+    derived_from: org.openecomp.resource.vfc.nodes.volume
+    description: 'Represents a server-local block storage device that provides persistent
+      storage to guest virtual machines. '
+    properties:
+      availability_zone:
+        type: string
+        description: The availability zone in which the volume will be created
+      image:
+        type: string
+        description: If specified, the name or ID of the image to create the volume from
+      metadata:
+        type: map
+        description: Key/value pairs to associate with the volume
+        entry_schema:
+          type: string
+      volume_type:
+        type: string
+        description: If specified, the type of volume to use, mapping to a specific backend
+      description:
+        type: string
+        description: A description of the volume
+      device_type:
+        type: string
+        description: Device type
+      disk_bus:
+        type: string
+        description: 'Bus of the device: hypervisor driver chooses a suitable default
+          if omitted'
+      backup_id:
+        type: string
+        description: If specified, the backup to create the volume from
+      source_volid:
+        type: string
+        description: If specified, the volume to use as source
+      boot_index:
+        type: integer
+        description: Integer used for ordering the boot disks
+      read_only:
+        type: boolean
+        description: Enables or disables read-only access mode of volume
+      name:
+        type: string
+        description: A name used to distinguish the volume
+      scheduler_hints:
+        type: map
+        description: Arbitrary key-value pairs specified by the client to help the Cinder scheduler creating a volume
+        entry_schema:
+          type: string
+      swap_size:
+        type: scalar-unit.size
+        description: The size of the swap, in MB
+      delete_on_termination:
+        type: boolean
+        description: Indicate whether the volume should be deleted when the server is terminated
+      multiattach:
+        type: boolean
+        description: Whether allow the volume to be attached more than once
diff --git a/src/test/resources/ymlFiles/resource-Contrailport-template-1.yml b/src/test/resources/ymlFiles/resource-Contrailport-template-1.yml
new file mode 100644 (file)
index 0000000..48204e9
--- /dev/null
@@ -0,0 +1,54 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: 3f85c405-6a4f-48ea-bf6c-bfd4421ddf00
+  UUID: 1ba2f413-5111-4bb1-ae56-46d96c600612
+  name: ContrailPort
+  description: Represents a logical entity that associates between Compute and Network normative types for contrail.
+  type: CP
+  category: Generic
+  subcategory: Network Elements
+  resourceVendor: ATT (Tosca)
+  resourceVendorRelease: 1.0.0.wd03
+  resourceVendorModelNumber: ''
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.cp.nodes.heat.network.contrail.Port:
+    derived_from: org.openecomp.resource.cp.nodes.network.Port
+    description: Represents a logical entity that associates between Compute and Network normative types for contrail.
+    properties:
+      static_routes:
+        type: list
+        description: An ordered list of static routes to be added to this interface
+        entry_schema:
+          type: org.openecomp.datatypes.heat.network.contrail.port.StaticRoute
+      virtual_network:
+        type: string
+        description: Virtual Network for this interface
+      static_route:
+        type: boolean
+        default: false
+        description: Static route enabled
+      allowed_address_pairs:
+        type: list
+        description: List of allowed address pair for this interface
+        entry_schema:
+          type: org.openecomp.datatypes.heat.network.contrail.AddressPair
+      shared_ip:
+        type: boolean
+        default: false
+        description: Shared ip enabled
+      interface_type:
+        type: string
+        description: Interface type
diff --git a/src/test/resources/ymlFiles/resource-Contrailport-template.yml b/src/test/resources/ymlFiles/resource-Contrailport-template.yml
new file mode 100644 (file)
index 0000000..c9e005e
--- /dev/null
@@ -0,0 +1,53 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: ae87766c-00ff-4973-bcbd-8385fafcd7c9
+  UUID: c8e68dc7-3e0c-44ec-ad06-b7df45e67d2c
+  name: ContrailPort
+  description: Represents a logical entity that associates between Compute and Network normative types for contrail.
+  type: CP
+  category: Generic
+  subcategory: Network Elements
+  resourceVendor: ATT (Tosca)
+  resourceVendorRelease: 1.0.0.wd03
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.cp.nodes.heat.network.contrail.Port:
+    derived_from: org.openecomp.resource.cp.nodes.network.Port
+    description: Represents a logical entity that associates between Compute and Network normative types for contrail.
+    properties:
+      static_routes:
+        type: list
+        description: An ordered list of static routes to be added to this interface
+        entry_schema:
+          type: org.openecomp.datatypes.heat.network.contrail.port.StaticRoute
+      virtual_network:
+        type: string
+        description: Virtual Network for this interface
+      static_route:
+        type: boolean
+        default: false
+        description: Static route enabled
+      allowed_address_pairs:
+        type: list
+        description: List of allowed address pair for this interface
+        entry_schema:
+          type: org.openecomp.datatypes.heat.network.contrail.AddressPair
+      shared_ip:
+        type: boolean
+        default: false
+        description: Shared ip enabled
+      interface_type:
+        type: string
+        description: Interface type
diff --git a/src/test/resources/ymlFiles/resource-Contrailv2virtualnetwork-template-1.yml b/src/test/resources/ymlFiles/resource-Contrailv2virtualnetwork-template-1.yml
new file mode 100644 (file)
index 0000000..6bac30c
--- /dev/null
@@ -0,0 +1,60 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: c7491ff5-1a81-4193-83ab-f46632255ec4
+  UUID: 2f46eaa9-99f0-482c-b483-b9beb4db2352
+  name: ContrailV2VirtualNetwork
+  description: Represents a network service with optional subnets and advanced configurations for contrail V2.
+  type: VL
+  category: Generic
+  subcategory: Network Elements
+  resourceVendor: ATT (Tosca)
+  resourceVendorRelease: 1.0.0.wd03
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork:
+    derived_from: org.openecomp.resource.vl.nodes.network.Network
+    description: Represents a network service with optional subnets and advanced configurations for contrail V2.
+    properties:
+      network_ipam_refs_data:
+        type: list
+        description: IPAM references Data
+        entry_schema:
+          type: org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.IpamRefData
+      network_policy_refs_data:
+        type: list
+        description: Policy references data
+        entry_schema:
+          type: org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.RefData
+      network_ipam_refs:
+        type: list
+        description: IPAM references
+        entry_schema:
+          type: string
+      network_policy_refs:
+        type: list
+        description: Policy references
+        entry_schema:
+          type: string
+      subnets:
+        type: map
+        description: Network related subnets
+        entry_schema:
+          type: org.openecomp.datatypes.heat.network.neutron.Subnet
+    capabilities:
+      attachment:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
diff --git a/src/test/resources/ymlFiles/resource-Contrailv2virtualnetwork-template.yml b/src/test/resources/ymlFiles/resource-Contrailv2virtualnetwork-template.yml
new file mode 100644 (file)
index 0000000..bf407d7
--- /dev/null
@@ -0,0 +1,61 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: 2375178f-4060-4049-8414-cd743bd68c3b
+  UUID: cf99547a-d390-4674-ae65-2244d5b1087c
+  name: ContrailV2VirtualNetwork
+  description: Represents a network service with optional subnets and advanced configurations for contrail V2.
+  type: VL
+  category: Generic
+  subcategory: Network Elements
+  resourceVendor: ATT (Tosca)
+  resourceVendorRelease: 1.0.0.wd03
+  resourceVendorModelNumber: ''
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork:
+    derived_from: org.openecomp.resource.vl.nodes.network.Network
+    description: Represents a network service with optional subnets and advanced configurations for contrail V2.
+    properties:
+      network_ipam_refs_data:
+        type: list
+        description: IPAM references Data
+        entry_schema:
+          type: org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.IpamRefData
+      network_policy_refs_data:
+        type: list
+        description: Policy references data
+        entry_schema:
+          type: org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.RefData
+      network_ipam_refs:
+        type: list
+        description: IPAM references
+        entry_schema:
+          type: string
+      network_policy_refs:
+        type: list
+        description: Policy references
+        entry_schema:
+          type: string
+      subnets:
+        type: map
+        description: Network related subnets
+        entry_schema:
+          type: org.openecomp.datatypes.heat.network.neutron.Subnet
+    capabilities:
+      attachment:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
diff --git a/src/test/resources/ymlFiles/resource-Contrailvirtualnetwork-template.yml b/src/test/resources/ymlFiles/resource-Contrailvirtualnetwork-template.yml
new file mode 100644 (file)
index 0000000..1ef0376
--- /dev/null
@@ -0,0 +1,60 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: 4ef3ec74-aa57-402b-881c-310037e4c042
+  UUID: b407610b-7520-46dc-a595-cb713bafe72e
+  name: ContrailVirtualNetwork
+  description: Represents a network service with optional subnets and advanced configurations.
+  type: VL
+  category: Generic
+  subcategory: Network Elements
+  resourceVendor: ATT (Tosca)
+  resourceVendorRelease: 1.0.0.wd03
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.vl.nodes.heat.network.contrail.VirtualNetwork:
+    derived_from: org.openecomp.resource.vl.nodes.network.Network
+    description: Represents a network service with optional subnets and advanced configurations.
+    properties:
+      shared:
+        type: string
+        description: Is virtual network shared
+      forwarding_mode:
+        type: string
+        description: forwarding mode of the virtual network
+      external:
+        type: string
+        description: Is virtual network external
+      allow_transit:
+        type: string
+        description: Whether this network should be transitive.
+      flood_unknown_unicast:
+        type: string
+        description: flood L2 packets on network
+      route_targets:
+        type: list
+        description: route targets associated with the virtual network
+        entry_schema:
+          type: string
+      subnets:
+        type: map
+        description: Network related subnets
+        entry_schema:
+          type: org.openecomp.datatypes.heat.network.neutron.Subnet
+    capabilities:
+      attachment:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
diff --git a/src/test/resources/ymlFiles/resource-NestedcomplexvfNodesHeatOam-template.yml b/src/test/resources/ymlFiles/resource-NestedcomplexvfNodesHeatOam-template.yml
new file mode 100644 (file)
index 0000000..87706e5
--- /dev/null
@@ -0,0 +1,28 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: abd21744-9146-46b9-83cd-21d8fc3a0e43
+  UUID: 59ccfa17-29b3-4311-b471-cb86adad6009
+  name: Nestedcomplexvf.nodes.heat.oam
+  description: Not reusable inner VFC
+  type: VFC
+  category: Generic
+  subcategory: Abstract
+  resourceVendor: vend
+  resourceVendorRelease: '2'
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.vfc.Nestedcomplexvf.abstract.nodes.heat.oam:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    description: Not reusable inner VFC
diff --git a/src/test/resources/ymlFiles/resource-NestedcomplexvfNodesHeatPrx-template.yml b/src/test/resources/ymlFiles/resource-NestedcomplexvfNodesHeatPrx-template.yml
new file mode 100644 (file)
index 0000000..af63c72
--- /dev/null
@@ -0,0 +1,28 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: 74d861dd-2a41-4307-a48c-88a3756dd5f5
+  UUID: f8d48bbc-a9aa-4fa3-9137-3a686ecfd322
+  name: Nestedcomplexvf.nodes.heat.prx
+  description: Not reusable inner VFC
+  type: VFC
+  category: Generic
+  subcategory: Abstract
+  resourceVendor: vend
+  resourceVendorRelease: '2'
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.vfc.Nestedcomplexvf.abstract.nodes.heat.prx:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    description: Not reusable inner VFC
diff --git a/src/test/resources/ymlFiles/resource-NestedcomplexvfNodesHeatRdn-template.yml b/src/test/resources/ymlFiles/resource-NestedcomplexvfNodesHeatRdn-template.yml
new file mode 100644 (file)
index 0000000..1319ab5
--- /dev/null
@@ -0,0 +1,28 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: 0d63000e-f2e6-477e-9374-5e68f323e3fe
+  UUID: 1eac0ec0-066d-4fe6-8846-391a19499ddb
+  name: Nestedcomplexvf.nodes.heat.rdn
+  description: Not reusable inner VFC
+  type: VFC
+  category: Generic
+  subcategory: Abstract
+  resourceVendor: vend
+  resourceVendorRelease: '2'
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.vfc.Nestedcomplexvf.abstract.nodes.heat.rdn:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+    description: Not reusable inner VFC
diff --git a/src/test/resources/ymlFiles/resource-Neutronport-template-1.yml b/src/test/resources/ymlFiles/resource-Neutronport-template-1.yml
new file mode 100644 (file)
index 0000000..2abfc1b
--- /dev/null
@@ -0,0 +1,96 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: e929eb25-c82d-4dac-9a9c-0193ccc131c8
+  UUID: b88ab067-a684-4c44-bdd1-80fb859cbcdd
+  name: NeutronPort
+  description: Represents a logical entity that associates between Compute and Network normative types.
+  type: CP
+  category: Generic
+  subcategory: Network Elements
+  resourceVendor: ATT (Tosca)
+  resourceVendorRelease: 1.0.0.wd03
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.cp.nodes.heat.network.neutron.Port:
+    derived_from: org.openecomp.resource.cp.nodes.network.Port
+    description: Represents a logical entity that associates between Compute and Network normative types.
+    properties:
+      port_security_enabled:
+        type: boolean
+        description: Flag to enable/disable port security on the network
+      device_id:
+        type: string
+        description: Device ID of this port
+      qos_policy:
+        type: string
+        description: The name or ID of QoS policy to attach to this network
+      allowed_address_pairs:
+        type: list
+        description: Additional MAC/IP address pairs allowed to pass through the port
+        entry_schema:
+          type: org.openecomp.datatypes.heat.network.AddressPair
+      binding:vnic_type:
+        type: string
+        description: The vnic type to be bound on the neutron port
+      value_specs:
+        type: map
+        default: {
+          }
+        description: Extra parameters to include in the request
+        entry_schema:
+          type: string
+      device_owner:
+        type: string
+        description: Name of the network owning the port
+      network:
+        type: string
+        description: Network this port belongs to
+      replacement_policy:
+        type: string
+        default: AUTO
+        description: Policy on how to respond to a stack-update for this resource
+      security_groups:
+        type: list
+        description: List of security group names or IDs
+        entry_schema:
+          type: string
+      fixed_ips:
+        type: list
+        description: Desired IPs for this port
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      mac_address:
+        type: string
+        description: MAC address to give to this port
+      admin_state_up:
+        type: boolean
+        default: true
+        description: A boolean value specifying the administrative status of the network
+      name:
+        type: string
+        description: A symbolic name for this port
+    capabilities:
+      attachment:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
diff --git a/src/test/resources/ymlFiles/resource-Neutronport-template.yml b/src/test/resources/ymlFiles/resource-Neutronport-template.yml
new file mode 100644 (file)
index 0000000..5f127e0
--- /dev/null
@@ -0,0 +1,96 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: d4884e14-c033-4f64-96fd-73f26d3e69e1
+  UUID: 7f3d92bc-bc98-4973-a7a6-d6d3ee3fa3fc
+  name: NeutronPort
+  description: Represents a logical entity that associates between Compute and Network normative types.
+  type: CP
+  category: Generic
+  subcategory: Network Elements
+  resourceVendor: ATT (Tosca)
+  resourceVendorRelease: 1.0.0.wd03
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.cp.nodes.heat.network.neutron.Port:
+    derived_from: org.openecomp.resource.cp.nodes.network.Port
+    description: Represents a logical entity that associates between Compute and Network normative types.
+    properties:
+      port_security_enabled:
+        type: boolean
+        description: Flag to enable/disable port security on the network
+      device_id:
+        type: string
+        description: Device ID of this port
+      qos_policy:
+        type: string
+        description: The name or ID of QoS policy to attach to this network
+      allowed_address_pairs:
+        type: list
+        description: Additional MAC/IP address pairs allowed to pass through the port
+        entry_schema:
+          type: org.openecomp.datatypes.heat.network.AddressPair
+      binding:vnic_type:
+        type: string
+        description: The vnic type to be bound on the neutron port
+      value_specs:
+        type: map
+        default: {
+          }
+        description: Extra parameters to include in the request
+        entry_schema:
+          type: string
+      device_owner:
+        type: string
+        description: Name of the network owning the port
+      network:
+        type: string
+        description: Network this port belongs to
+      replacement_policy:
+        type: string
+        default: AUTO
+        description: Policy on how to respond to a stack-update for this resource
+      security_groups:
+        type: list
+        description: List of security group names or IDs
+        entry_schema:
+          type: string
+      fixed_ips:
+        type: list
+        description: Desired IPs for this port
+        entry_schema:
+          type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+      mac_address:
+        type: string
+        description: MAC address to give to this port
+      admin_state_up:
+        type: boolean
+        default: true
+        description: A boolean value specifying the administrative status of the network
+      name:
+        type: string
+        description: A symbolic name for this port
+    capabilities:
+      attachment:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
diff --git a/src/test/resources/ymlFiles/resource-ScptestvspNodesBe-template.yml b/src/test/resources/ymlFiles/resource-ScptestvspNodesBe-template.yml
new file mode 100644 (file)
index 0000000..f72a8b2
--- /dev/null
@@ -0,0 +1,959 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: 501e3f78-ae62-4551-bc47-a9afa8f29034
+  UUID: fb6a8f39-84be-49a2-b551-26ce99ee6853
+  name: ScpTestVsp.nodes.be
+  description: Not reusable inner VFC
+  type: VFC
+  category: Generic
+  subcategory: Abstract
+  resourceVendor: SCP-Test-VLM
+  resourceVendorRelease: '1.0'
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.vfc.ScpTestVsp.abstract.nodes.be:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    description: Not reusable inner VFC
+    properties:
+      compute_be_availability_zone:
+        type: list
+        entry_schema:
+          type: string
+      port_port_be_cluster_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      port_port_be_ocs_network:
+        type: list
+        entry_schema:
+          type: string
+      port_port_be_oam_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_be_ocs_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      port_port_be_ocs_network_role_tag:
+        type: list
+        entry_schema:
+          type: string
+      port_port_be_cluster_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_be_cluster_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_be_oam_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      compute_be_metadata:
+        type: list
+        entry_schema:
+          type: json
+      index_value:
+        type: integer
+        default: 0
+        description: Index value of this substitution service template runtime instance
+      port_port_be_ocs_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      port_port_be_oam_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      port_port_be_oam_network:
+        type: list
+        entry_schema:
+          type: string
+      port_port_be_oam_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      port_port_be_cluster_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      port_port_be_oam_network_role_tag:
+        type: list
+        entry_schema:
+          type: string
+      port_port_be_ocs_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_be_ocs_fixed_ips:
+        type: list
+        entry_schema:
+          type: json
+      compute_be_user_data_format:
+        type: list
+        entry_schema:
+          type: string
+      compute_be_name:
+        type: list
+        entry_schema:
+          type: string
+      port_port_be_oam_fixed_ips:
+        type: list
+        entry_schema:
+          type: json
+      port_port_be_cluster_network:
+        type: list
+        entry_schema:
+          type: string
+      compute_be_scheduler_hints:
+        type: list
+        entry_schema:
+          type: json
+      port_port_be_ocs_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+    capabilities:
+      network.outpoing.packets_be_port_be_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_be_port_be_oam:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_be_port_be_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_be_port_be_cluster:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      cpu_util_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_be_port_be_oam:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_be_port_be_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_be_port_be_oam:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      network.outgoing.packets.rate_be_port_be_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_be_port_be_cluster:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_be_port_be_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.read.bytes.rate_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.read.bytes.rate_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.read.requests_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      vcpus_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      instance_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.latency_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets_be_port_be_ocs:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.read.bytes_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      memory.usage_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_be_port_be_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets_be_port_be_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_be:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.ephemeral.size_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      memory_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes_be_port_be_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.usage_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.write.bytes.rate_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.packets.rate_be_port_be_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      os_be:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          distribution:
+            type: string
+            required: false
+          type:
+            type: string
+            required: false
+          version:
+            type: version
+            required: false
+          architecture:
+            type: string
+            required: false
+      disk.iops_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.allocation_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.read.requests_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes.rate_be_port_be_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_be_port_be_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.capacity_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.latency_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets.rate_be_port_be_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes_be_port_be_ocs:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_be_port_be_ocs:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.write.requests_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_be_port_be_ocs:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_be_port_be_ocs:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.write.bytes_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.write.requests.rate_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.iops_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      scalable_be:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          max_instances:
+            type: integer
+            default: 1
+            required: false
+          min_instances:
+            type: integer
+            default: 1
+            required: false
+          default_instances:
+            type: integer
+            required: false
+      disk.write.requests_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      host_be:
+        type: tosca.capabilities.Container
+        occurrences:
+        - 1
+        - UNBOUNDED
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        properties:
+          num_cpus:
+            type: integer
+            required: false
+          disk_size:
+            type: scalar-unit.size
+            required: false
+          cpu_frequency:
+            type: scalar-unit.frequency
+            required: false
+          mem_size:
+            type: scalar-unit.size
+            required: false
+      disk.device.allocation_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_be_port_be_ocs:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_be_port_be_ocs:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.read.bytes_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      memory.resident_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_be_port_be_ocs:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      network.outgoing.packets.rate_be_port_be_ocs:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.usage_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes_be_port_be_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_be_port_be_ocs:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      endpoint_be:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          secure:
+            type: boolean
+            default: true
+            required: false
+      feature_be_port_be_cluster:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      cpu_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets.rate_be_port_be_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.write.bytes_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      cpu.delta_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.root.size_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.read.requests.rate_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_be_port_be_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_be:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_be_port_be_ocs:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes_be_port_be_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.write.requests.rate_be:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+    requirements:
+    - dependency_be_port_be_ocs:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_be_port_be_oam:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_be:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_be_port_be_cluster:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - link_be_port_be_ocs:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - link_be_port_be_oam:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - link_be_port_be_cluster:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - local_storage_be:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
diff --git a/src/test/resources/ymlFiles/resource-ScptestvspNodesFe0-template.yml b/src/test/resources/ymlFiles/resource-ScptestvspNodesFe0-template.yml
new file mode 100644 (file)
index 0000000..ed22940
--- /dev/null
@@ -0,0 +1,1235 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: 0df5de75-3a9e-439a-8d03-e989ca7bfe16
+  UUID: bc3a8aae-7f94-4dac-b819-d37a077a08fc
+  name: ScpTestVsp.nodes.fe_0
+  description: Not reusable inner VFC
+  type: VFC
+  category: Generic
+  subcategory: Abstract
+  resourceVendor: SCP-Test-VLM
+  resourceVendorRelease: '1.0'
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.vfc.ScpTestVsp.abstract.nodes.fe_0:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    description: Not reusable inner VFC
+    properties:
+      port_port_fe_oam_fixed_ips:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_interce_network:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_cluster_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe2_sigtran_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe2_sigtran_network:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_slan_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_interce_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_oam_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_oam_network:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_oam_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_interce_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe2_sigtran_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_oam_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_cluster_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe2_sigtran_network_role_tag:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe2_sigtran_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      compute_fe_scheduler_hints:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_slan_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_slan_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_interce_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      compute_fe_name:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_slan_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        default: 0
+        description: Index value of this substitution service template runtime instance
+      port_port_fe_interce_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe2_sigtran_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_oam_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_cluster_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_cluster_network:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_cluster_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_slan_network:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe2_sigtran_fixed_ips:
+        type: list
+        entry_schema:
+          type: json
+      compute_fe_user_data_format:
+        type: list
+        entry_schema:
+          type: string
+      compute_fe_availability_zone:
+        type: list
+        entry_schema:
+          type: string
+      compute_fe_metadata:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_oam_network_role_tag:
+        type: list
+        entry_schema:
+          type: string
+    capabilities:
+      network.incoming.bytes_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets.rate_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes.rate_fe_port_fe2_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes_fe_port_fe2_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      cpu_util_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_fe_port_fe_interce:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.device.read.bytes.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.capacity_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_fe_port_fe_interce:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_fe_port_fe_cluster:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_fe_port_fe_cluster:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.read.requests_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      instance_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_fe_port_fe2_sigtran:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.write.bytes.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      memory.usage_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_fe_port_fe2_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.write.bytes.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      os_fe:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          distribution:
+            type: string
+            required: false
+          type:
+            type: string
+            required: false
+          version:
+            type: version
+            required: false
+          architecture:
+            type: string
+            required: false
+      feature_fe:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.allocation_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.ephemeral.size_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.packets.rate_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.capacity_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.packets.rate_fe_port_fe2_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.usage_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.read.requests_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.write.requests_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.latency_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_fe_port_fe_slan:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.write.bytes_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.iops_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_fe_port_fe_oam:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_fe:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          max_instances:
+            type: integer
+            default: 1
+            required: false
+          min_instances:
+            type: integer
+            default: 1
+            required: false
+          default_instances:
+            type: integer
+            required: false
+      disk.write.requests_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_fe_port_fe_slan:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      network.outgoing.bytes.rate_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.packets.rate_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets_fe_port_fe2_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_fe_port_fe_oam:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      network.outgoing.bytes.rate_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      host_fe:
+        type: tosca.capabilities.Container
+        occurrences:
+        - 1
+        - UNBOUNDED
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        properties:
+          num_cpus:
+            type: integer
+            required: false
+          disk_size:
+            type: scalar-unit.size
+            required: false
+          cpu_frequency:
+            type: scalar-unit.frequency
+            required: false
+          mem_size:
+            type: scalar-unit.size
+            required: false
+      network.outgoing.bytes.rate_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.packets.rate_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.allocation_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.write.requests.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_fe_port_fe_oam:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_fe_port_fe2_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.read.bytes_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      memory.resident_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_fe_port_fe_slan:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.usage_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.packets.rate_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.iops_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets.rate_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes_fe_port_fe2_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      vcpus_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      endpoint_fe:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          secure:
+            type: boolean
+            default: true
+            required: false
+      network.incoming.bytes.rate_fe_port_fe2_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      cpu_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets.rate_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      cpu.delta_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_fe_port_fe_cluster:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes.rate_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_fe_port_fe_interce:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_fe:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets.rate_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_fe_port_fe2_sigtran:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.device.read.requests.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.write.requests.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_fe_port_fe2_sigtran:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+    requirements:
+    - dependency_fe_port_fe_interce:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_fe_port_fe_cluster:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_fe_port_fe_oam:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_fe_port_fe2_sigtran:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_fe:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_fe_port_fe_slan:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - link_fe_port_fe_interce:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - link_fe_port_fe_slan:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - link_fe_port_fe_oam:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - link_fe_port_fe_cluster:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - link_fe_port_fe2_sigtran:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - local_storage_fe:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
diff --git a/src/test/resources/ymlFiles/resource-ScptestvspNodesFe1-template.yml b/src/test/resources/ymlFiles/resource-ScptestvspNodesFe1-template.yml
new file mode 100644 (file)
index 0000000..3c668d4
--- /dev/null
@@ -0,0 +1,1235 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: 2a477fa7-ac1b-4a62-baa1-e94c764d736b
+  UUID: da3c740a-e8af-4b85-a487-b4961b040fa3
+  name: ScpTestVsp.nodes.fe_1
+  description: Not reusable inner VFC
+  type: VFC
+  category: Generic
+  subcategory: Abstract
+  resourceVendor: SCP-Test-VLM
+  resourceVendorRelease: '1.0'
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.vfc.ScpTestVsp.abstract.nodes.fe_1:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    description: Not reusable inner VFC
+    properties:
+      port_port_fe1_sigtran_network_role_tag:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_oam_fixed_ips:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_interce_network:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_cluster_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe1_sigtran_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_slan_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_interce_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_oam_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_oam_network:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_oam_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_interce_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_oam_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_cluster_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      compute_fe_scheduler_hints:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_slan_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_slan_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_interce_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      compute_fe_name:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_slan_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        default: 0
+        description: Index value of this substitution service template runtime instance
+      port_port_fe_interce_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe1_sigtran_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe1_sigtran_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe1_sigtran_fixed_ips:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_oam_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_cluster_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_cluster_network:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe_cluster_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_slan_network:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe1_sigtran_network:
+        type: list
+        entry_schema:
+          type: string
+      compute_fe_user_data_format:
+        type: list
+        entry_schema:
+          type: string
+      compute_fe_availability_zone:
+        type: list
+        entry_schema:
+          type: string
+      port_port_fe1_sigtran_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      compute_fe_metadata:
+        type: list
+        entry_schema:
+          type: json
+      port_port_fe_oam_network_role_tag:
+        type: list
+        entry_schema:
+          type: string
+    capabilities:
+      network.incoming.bytes_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets.rate_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      cpu_util_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_fe_port_fe_interce:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.device.read.bytes.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets.rate_fe_port_fe1_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.capacity_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_fe_port_fe_interce:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_fe_port_fe_cluster:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_fe_port_fe1_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.read.bytes.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_fe_port_fe_cluster:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.read.requests_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      instance_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes_fe_port_fe1_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.write.bytes.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      memory.usage_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_fe_port_fe1_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.write.bytes.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      os_fe:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          distribution:
+            type: string
+            required: false
+          type:
+            type: string
+            required: false
+          version:
+            type: version
+            required: false
+          architecture:
+            type: string
+            required: false
+      feature_fe:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.allocation_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.ephemeral.size_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.packets.rate_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.capacity_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.usage_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.read.requests_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_fe_port_fe1_sigtran:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.latency_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_fe_port_fe_slan:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.write.bytes_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.iops_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_fe_port_fe1_sigtran:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      network.incoming.bytes_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_fe_port_fe_oam:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_fe:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          max_instances:
+            type: integer
+            default: 1
+            required: false
+          min_instances:
+            type: integer
+            default: 1
+            required: false
+          default_instances:
+            type: integer
+            required: false
+      disk.write.requests_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_fe_port_fe_slan:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      network.outgoing.bytes.rate_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.packets.rate_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_fe_port_fe_oam:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      network.outgoing.bytes.rate_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      host_fe:
+        type: tosca.capabilities.Container
+        occurrences:
+        - 1
+        - UNBOUNDED
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        properties:
+          num_cpus:
+            type: integer
+            required: false
+          disk_size:
+            type: scalar-unit.size
+            required: false
+          cpu_frequency:
+            type: scalar-unit.frequency
+            required: false
+          mem_size:
+            type: scalar-unit.size
+            required: false
+      network.outgoing.bytes.rate_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.packets.rate_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.allocation_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes.rate_fe_port_fe1_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.write.requests.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_fe_port_fe_oam:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      memory.resident_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_fe_port_fe_slan:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes_fe_port_fe1_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.usage_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.packets.rate_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.iops_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets.rate_fe_port_fe_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      vcpus_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      endpoint_fe:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          secure:
+            type: boolean
+            default: true
+            required: false
+      cpu_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets.rate_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      cpu.delta_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_fe_port_fe_cluster:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_fe_port_fe_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_fe_port_fe1_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_fe_port_fe1_sigtran:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_fe_port_fe_slan:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_fe_port_fe_interce:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.packets.rate_fe_port_fe1_sigtran:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_fe:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets.rate_fe_port_fe_interce:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.read.requests.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.write.requests.rate_fe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+    requirements:
+    - dependency_fe_port_fe_interce:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_fe_port_fe_cluster:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_fe_port_fe_oam:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_fe:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_fe_port_fe_slan:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_fe_port_fe1_sigtran:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - link_fe_port_fe_interce:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - link_fe_port_fe_slan:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - link_fe_port_fe_oam:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - link_fe_port_fe_cluster:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - link_fe_port_fe1_sigtran:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - local_storage_fe:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
diff --git a/src/test/resources/ymlFiles/resource-ScptestvspNodesSmp-template.yml b/src/test/resources/ymlFiles/resource-ScptestvspNodesSmp-template.yml
new file mode 100644 (file)
index 0000000..7938a56
--- /dev/null
@@ -0,0 +1,813 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: dd97be59-be12-4749-b8ca-1bf0d7336573
+  UUID: 0a09e932-9fde-4e52-b7e3-2e542b61faa0
+  name: ScpTestVsp.nodes.smp
+  description: Not reusable inner VFC
+  type: VFC
+  category: Generic
+  subcategory: Abstract
+  resourceVendor: SCP-Test-VLM
+  resourceVendorRelease: '1.0'
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.vfc.ScpTestVsp.abstract.nodes.smp:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    description: Not reusable inner VFC
+    properties:
+      port_port_smp_oam_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_smp_cluster_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      port_port_smp_oam_fixed_ips:
+        type: list
+        entry_schema:
+          type: json
+      compute_smp_name:
+        type: list
+        entry_schema:
+          type: string
+      port_port_smp_oam_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      index_value:
+        type: integer
+        default: 0
+        description: Index value of this substitution service template runtime instance
+      compute_smp_availability_zone:
+        type: list
+        entry_schema:
+          type: string
+      port_port_smp_cluster_security_groups:
+        type: list
+        entry_schema:
+          type: json
+      port_port_smp_cluster_network:
+        type: list
+        entry_schema:
+          type: string
+      port_port_smp_oam_network_role_tag:
+        type: list
+        entry_schema:
+          type: string
+      compute_smp_user_data_format:
+        type: list
+        entry_schema:
+          type: string
+      port_port_smp_oam_network:
+        type: list
+        entry_schema:
+          type: string
+      port_port_smp_oam_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_smp_cluster_ip_requirements:
+        type: list
+        entry_schema:
+          type: json
+      port_port_smp_cluster_mac_requirements:
+        type: list
+        entry_schema:
+          type: json
+      compute_smp_metadata:
+        type: list
+        entry_schema:
+          type: json
+      port_port_smp_oam_replacement_policy:
+        type: list
+        entry_schema:
+          type: string
+      compute_smp_scheduler_hints:
+        type: list
+        entry_schema:
+          type: json
+    capabilities:
+      feature_smp:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_smp:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          max_instances:
+            type: integer
+            default: 1
+            required: false
+          min_instances:
+            type: integer
+            default: 1
+            required: false
+          default_instances:
+            type: integer
+            required: false
+      memory.resident_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.packets.rate_smp_port_smp_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_smp_port_smp_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_smp_port_smp_oam:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_smp_port_smp_oam:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.device.write.bytes_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      os_smp:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          distribution:
+            type: string
+            required: false
+          type:
+            type: string
+            required: false
+          version:
+            type: version
+            required: false
+          architecture:
+            type: string
+            required: false
+      network.outgoing.bytes_smp_port_smp_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_smp:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes_smp_port_smp_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_smp_port_smp_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets_smp_port_smp_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_smp_port_smp_oam:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      host_smp:
+        type: tosca.capabilities.Container
+        occurrences:
+        - 1
+        - UNBOUNDED
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        properties:
+          num_cpus:
+            type: integer
+            required: false
+          disk_size:
+            type: scalar-unit.size
+            required: false
+          cpu_frequency:
+            type: scalar-unit.frequency
+            required: false
+          mem_size:
+            type: scalar-unit.size
+            required: false
+      disk.device.usage_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets.rate_smp_port_smp_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      feature_smp_port_smp_cluster:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.ephemeral.size_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes_smp_port_smp_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.write.bytes.rate_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.write.bytes.rate_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.capacity_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      binding_smp_port_smp_cluster:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 0
+        - UNBOUNDED
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      disk.device.read.bytes.rate_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes.rate_smp_port_smp_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.latency_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.write.requests.rate_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.packets.rate_smp_port_smp_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.root.size_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      attachment_smp_port_smp_cluster:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      cpu.delta_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.write.requests_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      memory_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.iops_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes.rate_smp_port_smp_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.allocation_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.read.requests.rate_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.read.bytes_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      vcpus_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.write.requests.rate_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outgoing.bytes.rate_smp_port_smp_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.latency_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.iops_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.read.bytes.rate_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.bytes_smp_port_smp_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      cpu_util_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets_smp_port_smp_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.write.bytes_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      memory.usage_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.incoming.packets.rate_smp_port_smp_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
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.read.requests_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      disk.device.capacity_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      cpu_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      network.outpoing.packets_smp_port_smp_cluster:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+      endpoint_smp:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          secure:
+            type: boolean
+            default: true
+            required: false
+      disk.device.read.requests_smp:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          name:
+            type: string
+            description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+            required: true
+    requirements:
+    - dependency_smp:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_smp_port_smp_oam:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - dependency_smp_port_smp_cluster:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+    - link_smp_port_smp_cluster:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - link_smp_port_smp_oam:
+        occurrences:
+        - 1
+        - 1
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+    - local_storage_smp:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
diff --git a/src/test/resources/ymlFiles/resource-Securityrules-template.YML b/src/test/resources/ymlFiles/resource-Securityrules-template.YML
new file mode 100644 (file)
index 0000000..0221cd5
--- /dev/null
@@ -0,0 +1,48 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: dd31d2de-0a7f-4198-8966-3a04100fbfe3
+  UUID: d57e57d2-e3c6-470d-8d16-e6ea05f536c5
+  name: SecurityRules
+  description: Configuration of policy rules to be applied on ports.
+  type: VFC
+  category: Generic
+  subcategory: Rules
+  resourceVendor: ATT (Tosca)
+  resourceVendorRelease: 1.0.0.wd03
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules:
+    derived_from: tosca.nodes.Root
+    description: Configuration of policy rules to be applied on ports.
+    properties:
+      name:
+        type: string
+        description: A symbolic name for this security group, which is not required to be unique.
+      description:
+        type: string
+        description: Description of the security group
+      rules:
+        type: list
+        description: List of security group rules
+        entry_schema:
+          type: org.openecomp.datatypes.heat.network.neutron.SecurityRules.Rule
+    requirements:
+    - port:
+        occurrences:
+        - 0
+        - UNBOUNDED
+        capability: tosca.capabilities.Attachment
+        node: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+        relationship: org.openecomp.relationships.AttachesTo
diff --git a/src/test/resources/ymlFiles/resource-Subinterface-template.yml b/src/test/resources/ymlFiles/resource-Subinterface-template.yml
new file mode 100644 (file)
index 0000000..2b01936
--- /dev/null
@@ -0,0 +1,29 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: 2c30ef06-f83a-4642-a85c-9cb8edd81d9a
+  UUID: 25e0a9ec-c803-4aec-bef8-af1dab636116
+  name: subInterface
+  description: VLAN sub-Interface is a logical port which must be binded to a port. Regular port may have 1N VLAN Interfaces.It can connect to its own network (regardless of the network the parent port can connect)
+  type: CP
+  category: Generic
+  subcategory: Network Elements
+  resourceVendor: ATT (Tosca)
+  resourceVendorRelease: 1.0.0.wd03
+  resourceVendorModelNumber: ''
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.cp.nodes.network.SubInterface:
+    derived_from: tosca.nodes.network.Port
+    description: VLAN sub-Interface is a logical port which must be binded to a port. Regular port may have 1N VLAN Interfaces.It can connect to its own network (regardless of the network the parent port can connect)
diff --git a/src/test/resources/ymlFiles/resource-Vl-template.yml b/src/test/resources/ymlFiles/resource-Vl-template.yml
new file mode 100644 (file)
index 0000000..d80e228
--- /dev/null
@@ -0,0 +1,77 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+  invariantUUID: 1b76148a-81c1-4173-a16a-51a8f1f94bfa
+  UUID: af185035-ac2d-41e2-a410-f49c8b9f1de9
+  name: VL
+  description: ' Virtual link (VL) describes the basic topology of the connectivity
+    as well as other required parameters (e.g. bandwidth and QoS class). '
+  type: VL
+  category: Network Connectivity
+  subcategory: Virtual Links
+  resourceVendor: ATT (Tosca)
+  resourceVendorRelease: 1.0.0.wd03
+imports:
+- nodes:
+    file: nodes.yml
+- datatypes:
+    file: data.yml
+- capabilities:
+    file: capabilities.yml
+- relationships:
+    file: relationships.yml
+- groups:
+    file: groups.yml
+- policies:
+    file: policies.yml
+node_types:
+  org.openecomp.resource.vl.VL:
+    derived_from: tosca.nodes.network.Network
+    description: ' Virtual link (VL) describes the basic topology of the connectivity
+      as well as other required parameters (e.g. bandwidth and QoS class). '
+    properties:
+      vendor:
+        type: string
+      vl_name:
+        type: string
+    capabilities:
+      virtual_linkable:
+        type: tosca.capabilities.network.Linkable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      end_point:
+        type: tosca.capabilities.Endpoint
+        occurrences:
+        - 1
+        - UNBOUNDED
+        properties:
+          port_name:
+            type: string
+            required: false
+          protocol:
+            type: string
+            default: tcp
+            required: false
+          port:
+            type: PortDef
+            required: false
+          initiator:
+            type: string
+            default: source
+            required: false
+          network_name:
+            type: string
+            default: PRIVATE
+            required: false
+          secure:
+            type: boolean
+            default: false
+            required: false
+          ports:
+            type: map
+            required: false
+            entry_schema:
+              type: PortSpec
+          url_path:
+            type: string
+            required: false