diff options
261 files changed, 39249 insertions, 5788 deletions
@@ -69,16 +69,65 @@ Define in your hosts file the following: <ip address of Ecomp portal URL> portal.api.simpledemo.openecomp.org Open browser and navigate to: http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/login.htm -### Webseal simulator +### Webseal/SDC simulator This options is for developers to run locally SDC + +# SDC Simulator + +This options is for developers to run locally SDC +SDC Simulator is a project that enables emulation of web server that provides security policy and sign-on to the SDC component in dev environments. + + - Provides sign on to the basic user roles/functionalities + - Creation of basic user accounts + +# Docker compilation - Docker Maven Build Profile (io.fabric8 maven Plugin) + +If you are using onap vagrant you can deploy the simulator by: + +Set up the DOCKER_HOST environmental variable + +To set environmental variable in Windows (the docker engine environment): +- Run `cmd` +-- Issue command `set NAME=VAL +Example: set DOCKER_HOST=tcp://127.0.0.1:2375 +--To check if the variable set succeeded issue `echo %DOCKER_HOST%` + +- To compile sdc-simulator docker: +1. Run `mvn clean install -Ddocker.buildArg.http_proxy=<http_proxy> -Ddocker.buildArg.https_proxy=<https_proxy> -P docker` +-- The proxy arguments are passed and used as environmental variables in Dockerfiles +2. Copy the script /webseal-simulator/scripts/simulator_docker_run.sh to the docker engine environment and run: +`simulator_docker_run.sh -r 1.1-STAGING-latest` +3. Run `docker ps` to verify that sdc-simulator docker is up and running. +4. Enter to UI: `http://<ip address>:8285/login` + +# Docker compilation - Docker Engine + +1. Build web simulator WAR file: run `mvn clean install` on project “webseal simulator�. This will generate war file (WSSimulator.war) in the target folder. +2. Ftp war file: webseal-simulator/sdc-simulator folder to your localhost vagrant machine which runs docker engine daemon. +-- Check that WSSimulator.war exists after first step No.1 in webseal-simulator/sdc-simulator folder. +3. Run `docker build -t openecomp/sdc-simulator:1.1-STAGING-latest <PATH/sdc-simulator>` +Example: docker build -t openecomp/sdc-simulator:1.1-STAGING-latest /tmp/docker/sdc-simulator/ +-- If running behind a proxy: +`docker build --build-arg http_proxy=http://URL:PORT --build-arg https_proxy=http://URL:PORT -t openecomp/sdc-simulator:1.1-STAGING-latest /tmp/docker/sdc-simulator/` +4. Validate that images pushed to the local repo by executing `docker images` +5. Copy the script /webseal-simulator/scripts/simulator_docker_run.sh to the docker engine environment and run: `simulator_docker_run.sh -r 1.1-STAGING-latest` +6. Run `docker ps` to verify that sdc-simulator docker is up and running. +7. Enter to UI: `http://<ip address>:8285/login` + +# WAR compilation + + - To compile WSSimulator.war: 1. Build web simulator WAR file: run `mvn clean install` on project "webseal simulator". This will generate war file (WSSimulator.war) in the target folder. -2. Copy the war to: /home/vagrant/webseal-simulator/webapps -3. Add users to simulator: open configuration file - /home/vagrant/webseal-simulator/config/webseal.conf and add new user to the user list. +2. Ftp war file: webseal-simulator\target\WSSimulator.war to your localhost vagrant machine: /home/vagrant/webseal-simulator/webapps folder +3. Ftp configuration file: webseal-simulator\src\main\resources\webseal.conf to your localhost vagrant machine: /home/vagrant/webseal-simulator/config +4. Add users to simulator: open configuration file - webseal.conf and add new user to the user list. Note: You need to define the user in the SDC as well. -4. Restart the simulator: +5. To run the simulator, enter to your local vagrant and run: startWebsealSimulator.sh +-- Restart the simulator: Stop the simulator: stopWebsealSimulator.sh Start the simulator: startWebsealSimulator.sh -5. Enter to UI: http://<ip address>:8285/sdc1/login +6. Enter to UI: http://<ip address>:8285/login + ### SDC import normatives from CLI SDC needs to work with predefined basic normatives, in order to update the database with the normatives need to: diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-core/pom.xml b/common/openecomp-common-configuration-management/openecomp-configuration-management-core/pom.xml index 609e8abdf7..186a50849a 100644 --- a/common/openecomp-common-configuration-management/openecomp-configuration-management-core/pom.xml +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-core/pom.xml @@ -24,62 +24,62 @@ <artifactId>jackson-dataformat-yaml</artifactId> <version>${jackson.version}</version> </dependency> - <dependency> + <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-configuration2</artifactId> <version>2.1</version> </dependency> - <dependency> + <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> - <dependency> + <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>${commons.beanutils.version}</version> </dependency> - <dependency> + <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.3.2</version> </dependency> - <dependency> + <dependency> <groupId>com.github.adejanovski</groupId> <artifactId>cassandra-jdbc-wrapper</artifactId> <version>${cassandra.version}</version> </dependency> - <dependency> + <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> <version>2.0</version> </dependency> - <dependency> + <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.4.2</version> </dependency> - <dependency> + <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>${commons.io.version}</version> </dependency> - <dependency> + <dependency> <groupId>net.sf.corn</groupId> <artifactId>corn-cps</artifactId> <version>1.1.7</version> <exclusions> - <exclusion> - <groupId>com.sun</groupId> - <artifactId>tools</artifactId> - </exclusion> - </exclusions> + <exclusion> + <groupId>com.sun</groupId> + <artifactId>tools</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> - <groupId>com.virtlink.commons</groupId> - <artifactId>commons-configuration2-jackson</artifactId> - <version>0.6.1</version> - </dependency> + <groupId>com.virtlink.commons</groupId> + <artifactId>commons-configuration2-jackson</artifactId> + <version>0.6.1</version> + </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> @@ -95,16 +95,16 @@ <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-ext</artifactId> - <version>${slf4j.version}</version> - </dependency> <dependency> - <groupId>org.openecomp.sdc.common</groupId> - <artifactId>openecomp-configuration-management-api</artifactId> - <version>1.1.0-SNAPSHOT</version> - </dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-ext</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.openecomp.sdc.common</groupId> + <artifactId>openecomp-configuration-management-api</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-core/src/main/java/org/openecomp/config/ConfigurationUtils.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-core/src/main/java/org/openecomp/config/ConfigurationUtils.java index c0a1e0ceb0..889efea3da 100644 --- a/common/openecomp-common-configuration-management/openecomp-configuration-management-core/src/main/java/org/openecomp/config/ConfigurationUtils.java +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-core/src/main/java/org/openecomp/config/ConfigurationUtils.java @@ -584,14 +584,19 @@ public class ConfigurationUtils { stmt.setString(i + 1, params[i]); } } - ResultSet rs = stmt.executeQuery(); - while (rs.next()) { - coll.add(rs.getString(1)); + + try (ResultSet rs = stmt.executeQuery()) { + + while (rs.next()) { + coll.add(rs.getString(1)); + } } + } catch (Exception exception) { //exception.printStackTrace(); return null; } + return coll; } diff --git a/common/openecomp-logging-lib/openecomp-logging-api/src/main/java/org/openecomp/core/logging/api/LoggerFactory.java b/common/openecomp-logging-lib/openecomp-logging-api/src/main/java/org/openecomp/core/logging/api/LoggerFactory.java index e6f4aa3707..fdc874ee54 100644 --- a/common/openecomp-logging-lib/openecomp-logging-api/src/main/java/org/openecomp/core/logging/api/LoggerFactory.java +++ b/common/openecomp-logging-lib/openecomp-logging-api/src/main/java/org/openecomp/core/logging/api/LoggerFactory.java @@ -41,8 +41,8 @@ public class LoggerFactory extends BaseFactory { try { service = locateService(LoggerCreationService.class); - } catch (Throwable throwable) { - new RuntimeException("Failed to instantiate logger factory", throwable).printStackTrace(); + } catch (Exception e) { + new RuntimeException("Failed to instantiate logger factory", e).printStackTrace(); // use the no-op service to prevent recursion in case of an attempt to log an exception as a // result of a logger initialization error service = new NoOpLoggerCreationService(); diff --git a/common/openecomp-logging-lib/openecomp-logging-api/src/main/java/org/openecomp/core/logging/api/context/TaskFactory.java b/common/openecomp-logging-lib/openecomp-logging-api/src/main/java/org/openecomp/core/logging/api/context/TaskFactory.java index b358a77573..30bc7372c6 100644 --- a/common/openecomp-logging-lib/openecomp-logging-api/src/main/java/org/openecomp/core/logging/api/context/TaskFactory.java +++ b/common/openecomp-logging-lib/openecomp-logging-api/src/main/java/org/openecomp/core/logging/api/context/TaskFactory.java @@ -46,8 +46,8 @@ public class TaskFactory extends BaseFactory { try { service = locateService(ContextPropagationService.class); - } catch (Throwable throwable) { - error = new RuntimeException("Failed to instantiate task factory", throwable); + } catch (Exception e) { + error = new RuntimeException("Failed to instantiate task factory", e); } SERVICE = service; diff --git a/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-core/src/main/java/org/openecomp/sdc/generator/aai/AaiArtifactGenerator.java b/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-core/src/main/java/org/openecomp/sdc/generator/aai/AaiArtifactGenerator.java index c8e7be53d6..f4dd4d476c 100644 --- a/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-core/src/main/java/org/openecomp/sdc/generator/aai/AaiArtifactGenerator.java +++ b/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-core/src/main/java/org/openecomp/sdc/generator/aai/AaiArtifactGenerator.java @@ -163,7 +163,7 @@ public class AaiArtifactGenerator implements ArtifactGenerator { log.warn( "Additional tosca file found with resource version id : " + resourceUuId); - break; + continue; } //update resource version with version from service tosca String resourceVersion = resourcesVersion.get(resourceUuId); diff --git a/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-test/dependency-reduced-pom.xml b/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-test/dependency-reduced-pom.xml index a71fe7feaa..5a51961846 100644 --- a/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-test/dependency-reduced-pom.xml +++ b/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-test/dependency-reduced-pom.xml @@ -7,7 +7,6 @@ <relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
- <groupId>org.openecomp.sdc.common</groupId>
<artifactId>openecomp-sdc-artifact-generator-test</artifactId>
<build>
<plugins>
diff --git a/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-test/src/main/java/org/openecomp/sdc/generator/ArtifactGenerationServiceTest.java b/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-test/src/main/java/org/openecomp/sdc/generator/ArtifactGenerationServiceTest.java index 85479e31da..ced8acbb80 100644 --- a/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-test/src/main/java/org/openecomp/sdc/generator/ArtifactGenerationServiceTest.java +++ b/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-test/src/main/java/org/openecomp/sdc/generator/ArtifactGenerationServiceTest.java @@ -34,6 +34,7 @@ import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import java.io.ByteArrayInputStream; +import java.io.IOException; import java.io.InputStream; import java.util.*; import java.util.Properties; @@ -604,8 +605,11 @@ public class ArtifactGenerationServiceTest { try { jaxbContext = JAXBContext.newInstance(Model.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); - InputStream aaiModelStream = new ByteArrayInputStream(aaiModel.getBytes()); - return (Model) unmarshaller.unmarshal(aaiModelStream); + + try (InputStream aaiModelStream = new ByteArrayInputStream(aaiModel.getBytes())) { + return (Model) unmarshaller.unmarshal(aaiModelStream); + } catch (IOException ignored) { /* ignore */ } + } catch (JAXBException e) { e.printStackTrace(); } diff --git a/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-test/src/main/java/org/openecomp/sdc/generator/SampleJUnitTest.java b/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-test/src/main/java/org/openecomp/sdc/generator/SampleJUnitTest.java index bbbb74dc05..6d44a37a92 100644 --- a/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-test/src/main/java/org/openecomp/sdc/generator/SampleJUnitTest.java +++ b/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-test/src/main/java/org/openecomp/sdc/generator/SampleJUnitTest.java @@ -67,7 +67,10 @@ public class SampleJUnitTest extends TestCase { if (configLocation != null) { File file = new File(configLocation); if (file.exists()) { - properties.load(new FileInputStream(file)); + + try (InputStream fis = new FileInputStream(file)) { + properties.load(fis); + } } } } @@ -86,12 +89,9 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationSingleVFSingleVFModule() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_SingleVFVFMod.yml"); - readPayload(inputArtifacts, fis1, "vf_vmme_template_SingleVFVFMod.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_SingleVFVFMod.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_SingleVFVFMod.yml"); - readPayload(inputArtifacts, fis2, "service_vmme_template_SingleVFVFMod.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_SingleVFVFMod.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -124,8 +124,7 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationMissingVFInServiceTOSCA() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_MissingVFInServiceTOSCA.yml"); - readPayload(inputArtifacts, fis2, "service_vmme_template_MissingVFInServiceTOSCA.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_MissingVFInServiceTOSCA.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -156,12 +155,9 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationVerifySameStaticWidgetsForAllServices() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_SameWidgets1.yml"); - readPayload(inputArtifacts, fis1, "vf_vmme_template_SameWidgets1.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_SameWidgets1.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_SameWidget1.yml"); - readPayload(inputArtifacts, fis2, "service_vmme_template_SameWidget1.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_SameWidget1.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -179,11 +175,9 @@ public class SampleJUnitTest extends TestCase { List<Artifact> inputArtifacts2 = new ArrayList(); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_SameWidgets2.yml"); - readPayload(inputArtifacts2, fis3, "vf_vmme_template_SameWidgets2.yml"); + readPayloadFromResource(inputArtifacts2, "vf_vmme_template_SameWidgets2.yml"); - InputStream fis4 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_SameWidget2.yml"); - readPayload(inputArtifacts2, fis4, "service_vmme_template_SameWidget2.yml"); + readPayloadFromResource(inputArtifacts2, "service_vmme_template_SameWidget2.yml"); ArtifactGenerationServiceImpl obj2 = new ArtifactGenerationServiceImpl(); GenerationData data2 = obj2.generateArtifact(inputArtifacts2, generatorConfig,additionalParams); @@ -230,12 +224,9 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); String[] resourceFileList = {}; - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_MulVFVFMod.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_MulVFVFMod.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_MulVFVFMod.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_MulVFVFMod.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_MulVFVFMod.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_MulVFVFMod.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -268,17 +259,13 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/CMAUI_VF.yaml"); - readPayload(inputArtifacts,fis3, "CMAUI_VF.yaml"); + readPayloadFromResource(inputArtifacts, "CMAUI_VF.yaml"); - InputStream fis4 = SampleJUnitTest.class.getResourceAsStream("/ECA_OAM_VF.yaml"); - readPayload(inputArtifacts,fis4, "ECA_OAM_VF.yaml"); + readPayloadFromResource(inputArtifacts, "ECA_OAM_VF.yaml"); - InputStream fis5 = SampleJUnitTest.class.getResourceAsStream("/MMSC_Sevice_07_25_16.yaml"); - readPayload(inputArtifacts,fis5, "MMSC_Sevice_07_25_16.yaml"); + readPayloadFromResource(inputArtifacts, "MMSC_Sevice_07_25_16.yaml"); - InputStream fis6 = SampleJUnitTest.class.getResourceAsStream("/MMSC_VF.yaml"); - readPayload(inputArtifacts,fis6, "MMSC_VF.yaml"); + readPayloadFromResource(inputArtifacts, "MMSC_VF.yaml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -310,12 +297,9 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationDupVFUUID() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_DupVFUUID.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_DupVFUUID.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_DupVFUUID.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_DupVFUUID.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_DupVFUUID.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_DupVFUUID.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -346,12 +330,9 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationDupVFModUUID() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_DupVFModUUID.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_DupVFModUUID.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_DupVFModUUID.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_DupVFModUUID.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_DupVFModUUID.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_DupVFModUUID.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -381,12 +362,9 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationVerifyVFModWithoutVNFC() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_VerifyVFModWithoutVNFC.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_VerifyVFModWithoutVNFC.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_VerifyVFModWithoutVNFC.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_VerifyVFModWithoutVNFC.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_VerifyVFModWithoutVNFC.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_VerifyVFModWithoutVNFC.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -416,12 +394,9 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationVerifyVFModWithInvalidMember() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_VerifyVFModWithInvalidNo.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_VerifyVFModWithInvalidNo.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_VerifyVFModWithInvalidNo.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_VerifyVFModWithInvalidNo.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_VerifyVFModWithInvalidNo.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_VerifyVFModWithInvalidNo.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -451,12 +426,9 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationNullFields() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_NullFields.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_NullFields.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_NullFields.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_NullFields.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_NullFields.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_NullFields.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); @@ -477,17 +449,13 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/CMAUI_VFInvalidFormat.yaml"); - readPayload(inputArtifacts,fis3, "CMAUI_VFInvalidFormat.yaml"); + readPayloadFromResource(inputArtifacts, "CMAUI_VFInvalidFormat.yaml"); - InputStream fis4 = SampleJUnitTest.class.getResourceAsStream("/ECA_OAM_VFInvalidFormat.yaml"); - readPayload(inputArtifacts,fis4, "ECA_OAM_VFInvalidFormat.yaml"); + readPayloadFromResource(inputArtifacts, "ECA_OAM_VFInvalidFormat.yaml"); - InputStream fis5 = SampleJUnitTest.class.getResourceAsStream("/MMSC_Sevice_07_25_16InvalidFormat.yaml"); - readPayload(inputArtifacts,fis5, "MMSC_Sevice_07_25_16InvalidFormat.yaml"); + readPayloadFromResource(inputArtifacts, "MMSC_Sevice_07_25_16InvalidFormat.yaml"); - InputStream fis6 = SampleJUnitTest.class.getResourceAsStream("/MMSC_VFInvalidFormat.yaml"); - readPayload(inputArtifacts,fis6, "MMSC_VFInvalidFormat.yaml"); + readPayloadFromResource(inputArtifacts, "MMSC_VFInvalidFormat.yaml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); @@ -507,12 +475,9 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationMulComp() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_MulComp.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_MulComp.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_MulComp.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_MulComp.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_MulComp.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_MulComp.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -543,15 +508,11 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_Orphan.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_Orphan.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_Orphan.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_Orphan.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_Orphan.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_Orphan.yml"); - InputStream fis4 = SampleJUnitTest.class.getResourceAsStream("/ECA_OAM_VFOrphan.yaml"); - readPayload(inputArtifacts,fis4, "ECA_OAM_VFOrphan.yaml"); + readPayloadFromResource(inputArtifacts, "ECA_OAM_VFOrphan.yaml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -583,10 +544,7 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_MissingVFTemplate.yml"); - readPayload(inputArtifacts,fis1, "service_vmme_template_MissingVFTemplate.yml"); - - fis1.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_MissingVFTemplate.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -618,17 +576,13 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/CMAUI_VFMissingVFModule.yaml"); - readPayload(inputArtifacts,fis3, "CMAUI_VFMissingVFModule.yaml"); + readPayloadFromResource(inputArtifacts, "CMAUI_VFMissingVFModule.yaml"); - InputStream fis4 = SampleJUnitTest.class.getResourceAsStream("/ECA_OAM_VFMissingVFModule.yaml"); - readPayload(inputArtifacts,fis4, "ECA_OAM_VFMissingVFModule.yaml"); + readPayloadFromResource(inputArtifacts, "ECA_OAM_VFMissingVFModule.yaml"); - InputStream fis5 = SampleJUnitTest.class.getResourceAsStream("/MMSC_Sevice_07_25_16MissingVFModule.yaml"); - readPayload(inputArtifacts,fis5, "MMSC_Sevice_07_25_16MissingVFModule.yaml"); + readPayloadFromResource(inputArtifacts, "MMSC_Sevice_07_25_16MissingVFModule.yaml"); - InputStream fis6 = SampleJUnitTest.class.getResourceAsStream("/MMSC_VFMissingVFModule.yaml"); - readPayload(inputArtifacts,fis6, "MMSC_VFMissingVFModule.yaml"); + readPayloadFromResource(inputArtifacts, "MMSC_VFMissingVFModule.yaml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -680,12 +634,9 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_SingleVFVFMod.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_SingleVFVFMod.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_SingleVFVFMod.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_SingleVFVFMod.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_SingleVFVFMod.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_SingleVFVFMod.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); GenerationData data = obj.generateArtifact(inputArtifacts, "",additionalParams); @@ -705,15 +656,11 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/ServiceWithNodetemplate.yml"); - readPayload(inputArtifacts,fis1, "ServiceWithNodetemplate.yml"); + readPayloadFromResource(inputArtifacts, "ServiceWithNodetemplate.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/Resource0-template.yml"); - readPayload(inputArtifacts,fis2, "Resource0-template.yml"); + readPayloadFromResource(inputArtifacts, "Resource0-template.yml"); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/Resource1-template.yml"); - readPayload(inputArtifacts,fis3, "Resource1-template.yml"); + readPayloadFromResource(inputArtifacts, "Resource1-template.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -747,10 +694,7 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/Service0-template.yml"); - readPayload(inputArtifacts,fis1, "Service0-template.yml"); - - fis1.close(); + readPayloadFromResource(inputArtifacts, "Service0-template.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -784,10 +728,7 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/Service0-templateMoreThan256.yml"); - readPayload(inputArtifacts,fis1, "Service0-templateMoreThan256.yml"); - - fis1.close(); + readPayloadFromResource(inputArtifacts, "Service0-templateMoreThan256.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -825,17 +766,11 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_DiffVerOfSameVF.yml"); - readPayload(inputArtifacts,fis1, "service_vmme_template_DiffVerOfSameVF.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_DiffVerOfSameVF.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_DiffVerOfSameVF_1.yml"); - readPayload(inputArtifacts,fis2, "vf_vmme_template_DiffVerOfSameVF_1.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_DiffVerOfSameVF_1.yml"); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_DiffVerOfSameVF_2.yml"); - readPayload(inputArtifacts,fis3, "vf_vmme_template_DiffVerOfSameVF_2.yml"); - fis3.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_DiffVerOfSameVF_2.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -869,13 +804,9 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_DiffVerOfSameVFModWithSameInvId.yml"); - readPayload(inputArtifacts,fis1, "service_vmme_template_DiffVerOfSameVFModWithSameInvId.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_DiffVerOfSameVFModWithSameInvId.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_DiffVerOfSameVFModWithSameInvId.yml"); - readPayload(inputArtifacts,fis2, "vf_vmme_template_DiffVerOfSameVFModWithSameInvId.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_DiffVerOfSameVFModWithSameInvId.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -909,22 +840,13 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_WithL3Network.yml"); - readPayload(inputArtifacts,fis1, "service_vmme_template_WithL3Network.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_WithL3Network.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_WithL3Network.yml"); - readPayload(inputArtifacts,fis2, "vf_vmme_template_WithL3Network.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_WithL3Network.yml"); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/resource-AllottedResource-template_WithL3Network.yml"); - readPayload(inputArtifacts,fis3, "resource-AllottedResource-template_WithL3Network.yml"); - fis3.close(); + readPayloadFromResource(inputArtifacts, "resource-AllottedResource-template_WithL3Network.yml"); - InputStream fis4 = SampleJUnitTest.class.getResourceAsStream - ("/resource-Extvl-template_WithL3Network.yml"); - readPayload(inputArtifacts,fis4, "resource-Extvl-template_WithL3Network.yml"); - fis4.close(); + readPayloadFromResource(inputArtifacts, "resource-Extvl-template_WithL3Network.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -958,22 +880,13 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_WithDupL3Network.yml"); - readPayload(inputArtifacts,fis1, "service_vmme_template_WithDupL3Network.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_WithDupL3Network.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_WithDupL3Network.yml"); - readPayload(inputArtifacts,fis2, "vf_vmme_template_WithDupL3Network.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_WithDupL3Network.yml"); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/resource-AllottedResource-template_WithDupL3Network.yml"); - readPayload(inputArtifacts,fis3, "resource-AllottedResource-template_WithDupL3Network.yml"); - fis3.close(); + readPayloadFromResource(inputArtifacts, "resource-AllottedResource-template_WithDupL3Network.yml"); - InputStream fis4 = SampleJUnitTest.class.getResourceAsStream - ("/resource-Extvl-template_WithDupL3Network.yml"); - readPayload(inputArtifacts,fis4, "resource-Extvl-template_WithDupL3Network.yml"); - fis4.close(); + readPayloadFromResource(inputArtifacts, "resource-Extvl-template_WithDupL3Network.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -1007,17 +920,11 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_WithL3NetworkInVFMod.yml"); - readPayload(inputArtifacts,fis1, "service_vmme_template_WithL3NetworkInVFMod.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_WithL3NetworkInVFMod.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_WithL3NetworkInVFMod.yml"); - readPayload(inputArtifacts,fis2, "vf_vmme_template_WithL3NetworkInVFMod.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_WithL3NetworkInVFMod.yml"); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/resource-AllottedResource-template_WithL3NetworkInVFMod.yml"); - readPayload(inputArtifacts,fis3, "resource-AllottedResource-template_WithL3NetworkInVFMod.yml"); - fis3.close(); + readPayloadFromResource(inputArtifacts, "resource-AllottedResource-template_WithL3NetworkInVFMod.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -1051,28 +958,15 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_WithDiffVersionOfSameL3Network.yml"); - readPayload(inputArtifacts,fis1, "service_vmme_template_WithDiffVersionOfSameL3Network.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_WithDiffVersionOfSameL3Network.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_WithDiffVersionOfSameL3Network.yml"); - readPayload(inputArtifacts,fis2, "vf_vmme_template_WithDiffVersionOfSameL3Network.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_WithDiffVersionOfSameL3Network.yml"); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/resource-AllottedResource-template_WithDiffVersionOfSameL3Network.yml"); - readPayload(inputArtifacts,fis3, "resource-AllottedResource-template_WithDiffVersionOfSameL3Network.yml"); - fis3.close(); + readPayloadFromResource(inputArtifacts, "resource-AllottedResource-template_WithDiffVersionOfSameL3Network.yml"); - InputStream fis4 = SampleJUnitTest.class.getResourceAsStream - ("/resource-Extvl-template_WithDiffVersionOfSameL3Network.yml"); - readPayload(inputArtifacts,fis4, "resource-Extvl-template_WithDiffVersionOfSameL3Network.yml"); - fis4.close(); + readPayloadFromResource(inputArtifacts, "resource-Extvl-template_WithDiffVersionOfSameL3Network.yml"); - InputStream fis5 = SampleJUnitTest.class.getResourceAsStream - ("/resource-Extvl-template_1_WithDiffVersionOfSameL3Network.yml"); - readPayload(inputArtifacts,fis5, - "resource-Extvl-template_1_WithDiffVersionOfSameL3Network.yml"); - fis5.close(); + readPayloadFromResource(inputArtifacts, "resource-Extvl-template_1_WithDiffVersionOfSameL3Network.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -1105,15 +999,10 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationWithInvIdGreaterThanSpecifiedLimit() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_WithInvIdGreaterThanSpecifiedLimit.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_WithInvIdGreaterThanSpecifiedLimit" + - ".yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_WithInvIdGreaterThanSpecifiedLimit.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_WithInvIdGreaterThanSpecifiedLimit.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_WithInvIdGreaterThanSpecifiedLimit.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_WithInvIdGreaterThanSpecifiedLimit.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); - fis2.close(); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); Assert.assertEquals(false,data.getErrorData().isEmpty()); @@ -1132,15 +1021,10 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationWithInvIdLesserThanSpecifiedLimit() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_WithInvIdLesserThanSpecifiedLimit.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_WithInvIdLesserThanSpecifiedLimit" + - ".yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_WithInvIdLesserThanSpecifiedLimit.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_WithInvIdLesserThanSpecifiedLimit.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_WithInvIdLesserThanSpecifiedLimit.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_WithInvIdLesserThanSpecifiedLimit.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); - fis2.close(); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); Assert.assertEquals(false,data.getErrorData().isEmpty()); @@ -1162,14 +1046,9 @@ public class SampleJUnitTest extends TestCase { String configLoc = System.getProperty(ARTIFACTGENERATOR_CONFIG); try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_NoSystemPropConfigured.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_NoSystemPropConfigured" + - ".yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_NoSystemPropConfigured.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_NoSystemPropConfigured.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_NoSystemPropConfigured.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_NoSystemPropConfigured.yml"); System.clearProperty(ARTIFACTGENERATOR_CONFIG); @@ -1192,14 +1071,9 @@ public class SampleJUnitTest extends TestCase { String configLoc = System.getProperty(ARTIFACTGENERATOR_CONFIG); try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_NoSystemPropConfigured.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_NoSystemPropConfigured" + - ".yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_NoSystemPropConfigured.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_NoSystemPropConfigured.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_NoSystemPropConfigured.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_NoSystemPropConfigured.yml"); System.setProperty(ARTIFACTGENERATOR_CONFIG,configLoc + File.separator + "testErrorWhenNoFileAtConfigLocation"); Map<String, Model> outputArtifactMap = new HashMap<>(); @@ -1223,14 +1097,9 @@ public class SampleJUnitTest extends TestCase { loadConfig(ArtifactGenerationServiceTest.properties); try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_NoSystemPropConfigured.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_NoSystemPropConfigured" + - ".yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_NoSystemPropConfigured.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_NoSystemPropConfigured.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_NoSystemPropConfigured.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_NoSystemPropConfigured.yml"); Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); @@ -1254,14 +1123,9 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationWithUpdatedUUIDInConfig() throws Exception { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_WithUpdatedUUIDInConfig.yml"); - readPayload(inputArtifacts,fis1, "vf_vmme_template_WithUpdatedUUIDInConfig" + - ".yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_WithUpdatedUUIDInConfig.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_WithUpdatedUUIDInConfig.yml"); - readPayload(inputArtifacts,fis2, "service_vmme_template_WithUpdatedUUIDInConfig.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_WithUpdatedUUIDInConfig.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); @@ -1301,12 +1165,9 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationVerifyMandatoryParameterServiceVersion() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_VerifyMandatoryParameterServiceVersion.yml"); - readPayload(inputArtifacts, fis1, "vf_vmme_template_VerifyMandatoryParameterServiceVersion.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_VerifyMandatoryParameterServiceVersion.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_VerifyMandatoryParameterServiceVersion.yml"); - readPayload(inputArtifacts, fis2, "service_vmme_template_VerifyMandatoryParameterServiceVersion.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_VerifyMandatoryParameterServiceVersion.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, new HashMap<String, String>()); @@ -1323,12 +1184,9 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationVerifyServiceVersionFormat() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_VerifyServiceVersionFormat.yml"); - readPayload(inputArtifacts, fis1, "vf_vmme_template_VerifyServiceVersionFormat.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_VerifyServiceVersionFormat.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_VerifyServiceVersionFormat.yml"); - readPayload(inputArtifacts, fis2, "service_vmme_template_VerifyServiceVersionFormat.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_VerifyServiceVersionFormat.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); additionalParams.put(AdditionalParams.ServiceVersion.getName(),"1"); @@ -1363,12 +1221,9 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationVerifyServiceVersion() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_VerifyServiceVersion.yml"); - readPayload(inputArtifacts, fis1, "vf_vmme_template_VerifyServiceVersion.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_VerifyServiceVersion.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_VerifyServiceVersion.yml"); - readPayload(inputArtifacts, fis2, "service_vmme_template_VerifyServiceVersion.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_VerifyServiceVersion.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -1405,14 +1260,10 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationVerifyResourceVersionFormat() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_VerifyResourceVersionFormat.yml"); - readPayload(inputArtifacts, fis1, "vf_vmme_template_VerifyResourceVersionFormat.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_VerifyResourceVersionFormat.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_VerifyResourceVersionFormat1.yml"); - readPayload(inputArtifacts, fis2, "service_vmme_template_VerifyResourceVersionFormat1.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_VerifyResourceVersionFormat1.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); - fis2.close(); List<ToscaTemplate> toscas = new LinkedList(); for (Artifact inputArtifact : inputArtifacts) { @@ -1428,9 +1279,7 @@ public class SampleJUnitTest extends TestCase { inputArtifacts.remove(1); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_VerifyResourceVersionFormat2.yml"); - readPayload(inputArtifacts, fis3, "service_vmme_template_VerifyResourceVersionFormat2.yml"); - fis3.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_VerifyResourceVersionFormat2.yml"); GenerationData data2 = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); List<Artifact> resultData2 = data2.getResultData(); @@ -1448,12 +1297,9 @@ public class SampleJUnitTest extends TestCase { public void testArtifactGenerationVerifyMandatoryParameterResourceVersion() { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/vf_vmme_template_VerifyMandatoryParameterResourceVersion.yml"); - readPayload(inputArtifacts, fis1, "vf_vmme_template_VerifyMandatoryParameterResourceVersion.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_VerifyMandatoryParameterResourceVersion.yml"); - fis1.close(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service_vmme_template_VerifyMandatoryParameterResourceVersion.yml"); - readPayload(inputArtifacts, fis2, "service_vmme_template_VerifyMandatoryParameterResourceVersion.yml"); + readPayloadFromResource(inputArtifacts, "service_vmme_template_VerifyMandatoryParameterResourceVersion.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); for (Artifact inputArtifact : inputArtifacts) { @@ -1474,13 +1320,9 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/service-ServiceWithAllottedResourceIpmux-template.yml"); - readPayload(inputArtifacts, fis1, "service-ServiceWithAllottedResourceIpmux-template.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service-ServiceWithAllottedResourceIpmux-template.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/resource-AllottedResource-template_IpMux.yml"); - readPayload(inputArtifacts, fis2, "resource-AllottedResource-template_IpMux.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "resource-AllottedResource-template_IpMux.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -1505,14 +1347,9 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream - ("/service-ServiceWithAllottedResourceIpmux-template_WithGroups.yml"); - readPayload(inputArtifacts, fis1, "service-ServiceWithAllottedResourceIpmux-template_WithGroups.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service-ServiceWithAllottedResourceIpmux-template_WithGroups.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/resource-AllottedResource-template_IpMux_WithGroups.yml"); - readPayload(inputArtifacts, fis2, "resource-AllottedResource-template_IpMux_WithGroups.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "resource-AllottedResource-template_IpMux_WithGroups.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -1545,17 +1382,11 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/service-ServiceWithAllottedResourcesIpMuxSameInvariant-template.yml"); - readPayload(inputArtifacts, fis1, "service-ServiceWithAllottedResourcesIpMuxSameInvariant-template.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service-ServiceWithAllottedResourcesIpMuxSameInvariant-template.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/resource-AllottedResource1SameInvariant-IpMux-template.yml"); - readPayload(inputArtifacts, fis2, "resource-AllottedResource1SameInvariant-IpMux-template.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "resource-AllottedResource1SameInvariant-IpMux-template.yml"); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/resource-AllottedResource2SameInvariant-IpMux-template.yml"); - readPayload(inputArtifacts, fis3, "resource-AllottedResource2SameInvariant-IpMux-template.yml"); - fis3.close(); + readPayloadFromResource(inputArtifacts, "resource-AllottedResource2SameInvariant-IpMux-template.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -1589,13 +1420,9 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/service-ServiceWithAllottedResourcesIpMuxSameInvariantSameVers-template.yml"); - readPayload(inputArtifacts, fis1, "service-ServiceWithAllottedResourcesIpMuxSameInvariantSameVers-template.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service-ServiceWithAllottedResourcesIpMuxSameInvariantSameVers-template.yml"); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/resource-AllottedResourceSameInvariantSameVers-IpMux-template.yml"); - readPayload(inputArtifacts, fis2, "resource-AllottedResourceSameInvariantSameVers-IpMux-template.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "resource-AllottedResourceSameInvariantSameVers-IpMux-template.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -1629,14 +1456,11 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service-Allottedipmux-template.yml"); - readPayload(inputArtifacts, fis2, "service-Allottedipmux-template.yml"); + readPayloadFromResource(inputArtifacts, "service-Allottedipmux-template.yml"); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/resource-IpMuxDemux-template.yml"); - readPayload(inputArtifacts, fis1, "resource-IpMuxDemux-template.yml"); + readPayloadFromResource(inputArtifacts, "resource-IpMuxDemux-template.yml"); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/resource-TunnelXconn-template.yml"); - readPayload(inputArtifacts, fis3, "resource-TunnelXconn-template.yml"); + readPayloadFromResource(inputArtifacts, "resource-TunnelXconn-template.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -1669,22 +1493,15 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service-SdWan-template_WithOutDepSerId.yml"); - readPayload(inputArtifacts, fis2, "service-SdWan-template_WithOutDepSerId.yml"); + readPayloadFromResource(inputArtifacts, "service-SdWan-template_WithOutDepSerId.yml"); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/resource-VhnfNonHeat-template_WithOutDepSerId.yml"); - readPayload(inputArtifacts, fis1, "resource-VhnfNonHeat-template_WithOutDepSerId.yml"); + readPayloadFromResource(inputArtifacts, "resource-VhnfNonHeat-template_WithOutDepSerId.yml"); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/resource-TunnelXconn-template_WithOutDepSerId.yml"); - readPayload(inputArtifacts, fis3, "resource-TunnelXconn-template_WithOutDepSerId.yml"); + readPayloadFromResource(inputArtifacts, "resource-TunnelXconn-template_WithOutDepSerId.yml"); - InputStream fis4 = SampleJUnitTest.class.getResourceAsStream - ("/resource-ServiceAdmin-template_WithOutDepSerId.yml"); - readPayload(inputArtifacts, fis4, "resource-ServiceAdmin-template_WithOutDepSerId.yml"); + readPayloadFromResource(inputArtifacts, "resource-ServiceAdmin-template_WithOutDepSerId.yml"); - InputStream fis5 = SampleJUnitTest.class.getResourceAsStream - ("/resource-IpMuxDemux-template_WithOutDepSerId.yml"); - readPayload(inputArtifacts, fis5, "resource-IpMuxDemux-template_WithOutDepSerId.yml"); + readPayloadFromResource(inputArtifacts, "resource-IpMuxDemux-template_WithOutDepSerId.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -1707,22 +1524,15 @@ public class SampleJUnitTest extends TestCase { try { List<Artifact> inputArtifacts = new ArrayList(); - InputStream fis2 = SampleJUnitTest.class.getResourceAsStream("/service-SdWan-template_AllRes_VF.yml"); - readPayload(inputArtifacts, fis2, "service-SdWan-template_AllRes_VF.yml"); + readPayloadFromResource(inputArtifacts, "service-SdWan-template_AllRes_VF.yml"); - InputStream fis1 = SampleJUnitTest.class.getResourceAsStream("/resource-VhnfNonHeat-template_AllRes_VF.yml"); - readPayload(inputArtifacts, fis1, "resource-VhnfNonHeat-template_AllRes_VF.yml"); + readPayloadFromResource(inputArtifacts, "resource-VhnfNonHeat-template_AllRes_VF.yml"); - InputStream fis3 = SampleJUnitTest.class.getResourceAsStream("/resource-TunnelXconn-template_AllRes_VF.yml"); - readPayload(inputArtifacts, fis3, "resource-TunnelXconn-template_AllRes_VF.yml"); + readPayloadFromResource(inputArtifacts, "resource-TunnelXconn-template_AllRes_VF.yml"); - InputStream fis4 = SampleJUnitTest.class.getResourceAsStream - ("/resource-ServiceAdmin-template_AllRes_VF.yml"); - readPayload(inputArtifacts, fis4, "resource-ServiceAdmin-template_AllRes_VF.yml"); + readPayloadFromResource(inputArtifacts, "resource-ServiceAdmin-template_AllRes_VF.yml"); - InputStream fis5 = SampleJUnitTest.class.getResourceAsStream - ("/resource-IpMuxDemux-template_AllRes_VF.yml"); - readPayload(inputArtifacts, fis5, "resource-IpMuxDemux-template_AllRes_VF.yml"); + readPayloadFromResource(inputArtifacts, "resource-IpMuxDemux-template_AllRes_VF.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList(); @@ -1802,4 +1612,10 @@ public class SampleJUnitTest extends TestCase { } }*/ + private void readPayloadFromResource(List<Artifact> inputArtifacts, String fileName) throws IOException { + + try (InputStream fis = SampleJUnitTest.class.getResourceAsStream("/" + fileName)) { + readPayload(inputArtifacts, fis, fileName); + } + } } diff --git a/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/capabilities.yml b/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/capabilities.yml index 77d8eb9857..e395e3fc27 100644 --- a/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/capabilities.yml +++ b/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/capabilities.yml @@ -98,3 +98,53 @@ capability_types: description: Runtime monitored value type: string status: SUPPORTED + + tosca.capabilities.nfv.VirtualLinkable: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.Metric: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.VirtualBindable: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.VirtualCompute: + derived_from: tosca.capabilities.Root + properties: + virtual_memory: + type: tosca.datatypes.nfv.VirtualMemory + requested_additional_capabilities: + entry_schema: + type: tosca.datatypes.nfv.RequestedAdditionalCapability + required: false + type: map + virtual_cpu: + type: tosca.datatypes.nfv.VirtualCpu + + + tosca.capabilities.nfv.VirtualStorage: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.Forwarder: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.ext.Compute.Container.Architecture: + derived_from: tosca.capabilities.Root + properties: + num_cpus: + required: false + type: string + flavor_extra_specs: + entry_schema: + type: string + required: false + type: map + mem_size: + required: false + type: string + + tosca.capabilities.nfv.ext.ImageFile: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.ext.LocalAttachment: + derived_from: tosca.capabilities.Root
\ No newline at end of file diff --git a/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/data.yml b/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/data.yml index c7ce3c13e0..85ff50c112 100644 --- a/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/data.yml +++ b/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/data.yml @@ -554,4 +554,225 @@ data_types: description: Hash type required: false default: md5 - + + tosca.datatypes.nfv.RequestedAdditionalCapability: + derived_from: tosca.datatypes.Root + properties: + support_mandatory: + type: boolean + required: true + min_requested_additional_capability_version: + type: string + required: false + preferred_requested_additional_capability_version: + type: string + required: false + requested_additional_capability_name: + type: string + required: true + target_performance_parameters: + type: map + entry_schema: + type: string + required: true + tosca.datatypes.nfv.VirtualMemory: + derived_from: tosca.datatypes.Root + properties: + virtual_mem_size: + type: string + required: true + virtual_mem_oversubscription_policy: + type: string + required: false + numa_enabled: + type: boolean + required: false + tosca.datatypes.nfv.VirtualCpu: + derived_from: tosca.datatypes.Root + properties: + cpu_architecture: + type: string + required: false + num_virtual_cpu: + type: integer + required: true + virtual_cpu_clock: + type: scalar-unit.frequency + required: false + virtual_cpu_oversubscription_policy: + type: string + required: false + virtual_cpu_pinning: + type: tosca.datatypes.nfv.VirtualCpuPinning + required: false + tosca.datatypes.nfv.VirtualCpuPinning: + derived_from: tosca.datatypes.Root + properties: + cpu_pinning_policy: + type: string + constraints: + - valid_values: [ static, dynamic ] + required: false + cpu_pinning_map: + type: map + entry_schema: + type: string + required: false + tosca.datatypes.nfv.VnfcConfigurableProperties: + properties: + additional_vnfc_configurable_properties: + entry_schema: + type: string + required: false + type: map + tosca.datatypes.network.NetworkInfo: + properties: + network_id: + required: false + type: string + addresses: + entry_schema: + type: string + required: false + type: list + network_name: + required: false + type: string + tosca.datatypes.network.PortInfo: + properties: + port_name: + required: false + type: string + network_id: + required: false + type: string + addresses: + entry_schema: + type: string + required: false + type: list + mac_address: + required: false + type: string + port_id: + required: false + type: string + tosca.datatypes.nfv.L3AddressData: + properties: + number_of_ip_address: + required: false + type: integer + ip_address_assignment: + type: boolean + ip_address_type: + constraints: + - valid_values: + - ipv4 + - ipv6 + required: false + type: string + floating_ip_activated: + type: string + tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements: + properties: + name: + required: false + type: string + support_mandatory: + type: boolean + description: + required: false + type: string + requirement: + entry_schema: + type: string + type: map + tosca.datatype.nfv.AddressData: + properties: + address_type: + constraints: + - valid_values: + - mac_address + - ip_address + type: string + l2_address_data: + required: false + type: tosca.datatypes.nfv.L2AddressData + l3_address_data: + required: false + type: tosca.datatypes.nfv.L3AddressData + tosca.datatypes.nfv.L2AddressData: {} + tosca.datatypes.nfv.ConnectivityType: + properties: + layer_protocol: + constraints: + - valid_values: + - ethernet + - mpls + - odu2 + - ipv4 + - ipv6 + - pseudo_wire + type: string + flow_pattern: + required: false + type: string + tosca.datatypes.nfv.ext.FloatingIP: + properties: + external_network: + required: false + type: string + ip_address: + required: false + type: string + tosca.datatypes.nfv.ext.AddressPairs: + properties: + ip: + required: false + type: string + mac: + required: false + type: string + tosca.datatypes.nfv.ext.InjectData: + properties: + file_name: + required: false + type: string + file_data: + required: false + type: string + tosca.datatypes.nfv.ext.zte.WatchDog: + properties: + enable_delay: + required: false + type: integer + action: + required: false + type: string + tosca.datatypes.nfv.ext.LocalAffinityOrAntiAffinityRule: + properties: + scope: + required: false + type: string + affinity_antiaffinity: + required: false + type: string + tosca.datatypes.nfv.ext.LocationInfo: + properties: + availability_zone: + required: false + type: string + vimid: + required: false + type: integer + tenant: + required: false + type: string + tosca.datatypes.nfv.ext.HostRouteInfo: + properties: + destination: + required: false + type: string + nexthop: + required: false + type: string
\ No newline at end of file diff --git a/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/nodes.yml b/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/nodes.yml index fb2e030a06..aaff11b0ed 100644 --- a/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/nodes.yml +++ b/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/nodes.yml @@ -569,4 +569,538 @@ node_types: type: map entry_schema: type: org.openecomp.datatypes.ImageInfo - required: false
\ No newline at end of file + required: false + tosca.nodes.nfv.NS.vEPC_NS: + derived_from: tosca.nodes.nfv.NS + properties: + vendor: + default: ChinaMobile + required: false + type: string + csarVersion: + default: v1.0 + required: false + type: string + name: + default: vEPC_NS + required: false + type: string + csarProvider: + default: ChinaMobile + required: false + type: string + id: + default: vEPC_NS + required: false + type: string + version: + default: v1.0 + required: false + type: string + csarType: + default: NSAR + required: false + type: string + requirements: + - virtualLink: + capability: tosca.capabilities.nfv.VirtualLinkable + occurrences: + - 0 + - UNBOUNDED + + tosca.nodes.nfv.NS.vIMS_NS: + derived_from: tosca.nodes.nfv.NS + properties: + vendor: + default: ChinaMobile + required: false + type: string + csarVersion: + default: v1.0 + required: false + type: string + name: + default: vIMS_NS + required: false + type: string + csarProvider: + default: ChinaMobile + required: false + type: string + id: + default: vIMS_NS + required: false + type: string + version: + default: v1.0 + required: false + type: string + csarType: + default: NSAR + required: false + type: string + requirements: + - virtualLink: + capability: tosca.capabilities.nfv.VirtualLinkable + occurrences: + - 0 + - UNBOUNDED + + tosca.nodes.nfv.NS: + derived_from: tosca.nodes.Root + properties: + vendor: + required: false + type: string + name: + required: false + type: string + id: + required: false + type: string + version: + required: false + type: string + requirements: + - virtualLink: + capability: tosca.capabilities.nfv.VirtualLinkable + occurrences: + - 0 + - UNBOUNDED + + tosca.nodes.nfv.VDU.Compute: + attributes: + private_address: + type: string + public_address: + type: string + networks: + type: string + ports: + type: string + capabilities: + scalable: + type: tosca.capabilities.Scalable + virtual_compute: + type: tosca.capabilities.nfv.VirtualCompute + endpoint: + type: tosca.capabilities.Endpoint.Admin + os: + type: tosca.capabilities.OperatingSystem + virtual_binding: + type: tosca.capabilities.nfv.VirtualBindable + host: + type: tosca.capabilities.Container + binding: + type: tosca.capabilities.network.Bindable + monitoring_parameter: + type: tosca.capabilities.nfv.Metric + derived_from: tosca.nodes.Root + properties: + configurable_properties: + entry_schema: + type: tosca.datatypes.nfv.VnfcConfigurableProperties + type: map + name: + type: string + nfvi_constraints: + entry_schema: + type: string + required: false + type: list + descrption: + type: string + boot_order: + entry_schema: + type: string + required: false + type: list + requirements: + - local_storage: + capability: tosca.capabilities.Attachment + occurrences: + - 0 + - UNBOUNDED + - virtual_storage: + capability: tosca.capabilities.nfv.VirtualStorage + occurrences: + - 0 + - UNBOUNDED + + tosca.nodes.nfv.VDU.VirtualStorage: + capabilities: + virtual_storage: + type: tosca.capabilities.nfv.VirtualStorage + derived_from: tosca.nodes.Root + properties: + id: + type: string + size_of_storage: + type: string + rdma_enabled: + required: false + type: boolean + type_of_storage: + type: string + + tosca.nodes.nfv.VduCpd: + derived_from: tosca.nodes.Root + properties: + virtual_network_interface_requirements: + entry_schema: + type: tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements + required: false + type: list + role: + constraints: + - valid_values: + - root + - leaf + required: false + type: string + bitrate_requirement: + required: false + type: integer + description: + required: false + type: string + layer_protocol: + constraints: + - valid_values: + - ethernet + - mpls + - odu2 + - ipv4 + - ipv6 + - pseudo_wire + type: string + address_data: + entry_schema: + type: tosca.datatype.nfv.AddressData + required: false + type: list + requirements: + - virtual_binding: + capability: tosca.capabilities.nfv.VirtualBindable + occurrences: + - 0 + - UNBOUNDED + - virtual_link: + capability: tosca.capabilities.nfv.VirtualBindable + occurrences: + - 0 + - UNBOUNDED + tosca.nodes.nfv.ext.ImageFile: + capabilities: + guest_os: + type: tosca.capabilities.nfv.ext.GuestOs + image_fle: + type: tosca.capabilities.nfv.ext.ImageFile + derived_from: tosca.nodes.Root + properties: + file_url: + required: false + type: string + container_type: + required: false + type: string + name: + required: false + type: string + disk_format: + required: false + type: string + version: + required: false + type: string + tosca.nodes.nfv.ext.LocalStorage: + capabilities: + local_attachment: + type: tosca.capabilities.nfv.ext.LocalAttachment + derived_from: tosca.nodes.Root + properties: + size: + required: false + type: string + disk_type: + required: false + type: string + tosca.nodes.nfv.ext.zte.CP: + capabilities: + forwarder: + type: tosca.capabilities.nfv.Forwarder + derived_from: tosca.nodes.Root + properties: + guest_os_mtu: + required: false + type: integer + bandwidth: + required: false + type: integer + interface_name: + required: false + type: string + allowed_address_pairs: + entry_schema: + type: tosca.datatypes.nfv.ext.AddressPairs + required: false + type: list + ip_address: + required: false + type: string + bond: + required: false + type: string + proxiedVNFs: + entry_schema: + type: string + required: false + type: list + sfc_encapsulation: + required: false + type: string + floating_ip_address: + required: false + type: tosca.datatypes.nfv.ext.FloatingIP + service_ip_address: + required: false + type: string + mac_address: + required: false + type: string + proxiedVNFtype: + required: false + type: string + macbond: + required: false + type: string + vnic_type: + required: false + type: string + direction: + required: false + type: string + order: + required: false + type: integer + requirements: + - forwarder: + capability: tosca.capabilities.nfv.Forwarder + occurrences: + - 0 + - UNBOUNDED + - virtualbinding: + capability: tosca.capabilities.nfv.VirtualBindable + occurrences: + - 0 + - UNBOUNDED + - virtualLink: + capability: tosca.capabilities.nfv.VirtualBindable + occurrences: + - 0 + - UNBOUNDED + tosca.nodes.nfv.ext.zte.VDU: + capabilities: + scalable: + type: tosca.capabilities.Scalable + monitoring_parameter: + type: tosca.capabilities.nfv.Metric + nfv_compute: + type: tosca.capabilities.nfv.ext.Compute.Container.Architecture + virtualbinding: + type: tosca.capabilities.nfv.VirtualBindable + derived_from: tosca.nodes.Root + properties: + manual_scale_select_vim: + required: false + type: boolean + vdu_type: + required: false + type: string + watchdog: + required: false + type: tosca.datatypes.nfv.ext.zte.WatchDog + name: + required: false + type: string + local_affinity_antiaffinity_rule: + required: false + type: tosca.datatypes.nfv.ext.LocalAffinityOrAntiAffinityRule + support_scaling: + required: false + type: boolean + storage_policy: + required: false + type: string + key_vdu: + required: false + type: boolean + location_info: + required: false + type: tosca.datatypes.nfv.ext.LocationInfo + inject_data_list: + entry_schema: + type: tosca.datatypes.nfv.ext.InjectData + required: false + type: list + requirements: + - guest_os: + capability: tosca.capabilities.nfv.ext.GuestOs + occurrences: + - 0 + - UNBOUNDED + - local_storage: + capability: tosca.capabilities.nfv.ext.LocalAttachment + occurrences: + - 0 + - UNBOUNDED + - volume_storage: + capability: tosca.capabilities.Attachment + occurrences: + - 0 + - UNBOUNDED + - dependency: + capability: tosca.capabilities.Node + occurrences: + - 0 + - UNBOUNDED + tosca.nodes.nfv.ext.zte.VL: + capabilities: + virtual_linkable: + type: tosca.capabilities.nfv.VirtualLinkable + derived_from: tosca.nodes.Root + properties: + segmentation_id: + required: false + type: string + network_name: + required: false + type: string + is_predefined: + required: false + type: boolean + mtu: + required: false + type: integer + dns_nameservers: + entry_schema: + type: string + required: false + type: list + physical_network: + required: false + type: string + dhcp_enabled: + required: false + type: boolean + network_id: + required: false + type: string + host_routes: + entry_schema: + type: tosca.datatypes.nfv.ext.HostRouteInfo + required: false + type: list + ip_version: + required: false + type: integer + vendor: + required: false + type: string + name: + required: false + type: string + start_ip: + required: false + type: string + vlan_transparent: + required: false + type: boolean + cidr: + required: false + type: string + gateway_ip: + required: false + type: string + network_type: + required: false + type: string + end_ip: + required: false + type: string + location_info: + required: false + type: tosca.datatypes.nfv.ext.LocationInfo + tosca.nodes.nfv.ext.zte.VNF: + capabilities: + forwarder: + type: tosca.capabilities.nfv.Forwarder + derived_from: tosca.nodes.Root + properties: + request_reclassification: + required: false + type: boolean + domain_type: + required: false + type: string + nsh_aware: + required: false + type: boolean + plugin_info: + required: false + type: string + adjust_vnf_capacity: + required: false + type: boolean + vnfd_version: + required: false + type: string + vmnumber_overquota_alarm: + required: false + type: boolean + custom_properties: + entry_schema: + type: string + required: false + type: map + version: + required: false + type: string + cross_dc: + required: false + type: boolean + script_info: + required: false + type: string + vendor: + required: false + type: string + is_shared: + required: false + type: boolean + name: + required: false + type: string + vnf_extend_type: + required: false + type: string + id: + required: false + type: string + vnf_type: + required: false + type: string + is_sfc_proxy: + required: false + type: boolean + requirements: + - forwarder: + capability: tosca.capabilities.nfv.Forwarder + occurrences: + - 0 + - UNBOUNDED + - virtualLink: + capability: tosca.capabilities.nfv.VirtualLinkable + occurrences: + - 0 + - UNBOUNDED
\ No newline at end of file diff --git a/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/relationships.yml b/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/relationships.yml index 6243cfa5d1..220658a8bf 100644 --- a/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/relationships.yml +++ b/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp/relationships.yml @@ -54,3 +54,15 @@ relationship_types: status: SUPPORTED required: false + tosca.relationships.nfv.VDU.AttachedTo: + derived_from: tosca.relationships.Root + properties: + location: + required: false + type: string + + tosca.relationships.nfv.VirtualBindsTo: + derived_from: tosca.relationships.Root + + tosca.relationships.nfv.VirtualLinksTo: + derived_from: tosca.relationships.Root
\ No newline at end of file diff --git a/dox-sequence-diagram-ui/package.json b/dox-sequence-diagram-ui/package.json index 81d42af163..17f4efa0fa 100644 --- a/dox-sequence-diagram-ui/package.json +++ b/dox-sequence-diagram-ui/package.json @@ -12,14 +12,14 @@ "author": "ECOMP", "license": "SEE LICENSE IN LICENSE.TXT", "dependencies": { - "d3": "^4.10.0", + "d3": "^3.5.16", "lodash": "^4.12.0", "react": "^15.1.0", "react-dnd": "^2.1.2", "react-dnd-html5-backend": "^2.1.2", "react-dom": "^15.1.0", "react-redux": "^4.4.5", - "react-select": "^1.0.0-beta13", + "react-select": "1.0.0-rc.5", "redux": "^3.5.2" }, "devDependencies": { @@ -42,7 +42,6 @@ "eslint-plugin-jsx-a11y": "^1.2.2", "eslint-plugin-react": "^5.1.1", "file-loader": "^0.8.5", - "gulp": "^3.9.1", "json-loader": "^0.5.4", "node-http-proxy": "^0.2.3", "node-sass": "^3.7.0", diff --git a/dox-sequence-diagram-ui/webpack.config.js b/dox-sequence-diagram-ui/webpack.config.js index 7b7f4b948c..94850ec297 100644 --- a/dox-sequence-diagram-ui/webpack.config.js +++ b/dox-sequence-diagram-ui/webpack.config.js @@ -28,7 +28,7 @@ var config = { }, eslint: { failOnWarning: false, - failOnError: true, + failOnError: false, configFile: 'eslintrc.json' }, devtool: 'eval-source-map', diff --git a/onboarding/pom.xml b/onboarding/pom.xml index 36a36ee325..141ffc012d 100644 --- a/onboarding/pom.xml +++ b/onboarding/pom.xml @@ -20,6 +20,7 @@ <properties> <!-- Maven plugin versions --> + <jacoco.version>0.7.9</jacoco.version> <mvn.assembly.version>2.1</mvn.assembly.version> <mvn.compiler.version>2.5.1</mvn.compiler.version> <mvn.deploy.version>2.4</mvn.deploy.version> diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/openecomp-sdc-common-rest/src/main/java/org/openecomp/sdcrests/errors/DefaultExceptionMapper.java b/openecomp-be/api/openecomp-sdc-rest-webapp/openecomp-sdc-common-rest/src/main/java/org/openecomp/sdcrests/errors/DefaultExceptionMapper.java index d399469745..2f6d298f01 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/openecomp-sdc-common-rest/src/main/java/org/openecomp/sdcrests/errors/DefaultExceptionMapper.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/openecomp-sdc-common-rest/src/main/java/org/openecomp/sdcrests/errors/DefaultExceptionMapper.java @@ -35,29 +35,25 @@ import org.openecomp.sdc.common.errors.ValidationErrorBuilder; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import javax.validation.Path; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.ext.ExceptionMapper; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; public class DefaultExceptionMapper implements ExceptionMapper<Exception> { private static final String ERROR_CODES_TO_RESPONSE_STATUS_MAPPING_FILE = "errorCodesToResponseStatusMapping.json"; @SuppressWarnings("unchecked") private static Map<String, String> errorCodeToResponseStatus = - JsonUtil.json2Object(FileUtils - .getFileInputStream(ERROR_CODES_TO_RESPONSE_STATUS_MAPPING_FILE), Map.class); + FileUtils.readViaInputStream(ERROR_CODES_TO_RESPONSE_STATUS_MAPPING_FILE, + stream -> JsonUtil.json2Object(stream, Map.class)); + private static Logger logger = (Logger) LoggerFactory.getLogger(DefaultExceptionMapper.class); @Override diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/EntitlementPoolLimitsImpl.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/EntitlementPoolLimitsImpl.java index 36e25e0f2e..4365ace85d 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/EntitlementPoolLimitsImpl.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/EntitlementPoolLimitsImpl.java @@ -32,7 +32,9 @@ import javax.ws.rs.core.Response; public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits { private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); private VendorLicenseManager vendorLicenseManager = - VendorLicenseManagerFactory.getInstance().createInterface(); + VendorLicenseManagerFactory.getInstance().createInterface(); + + public static final String parent = "EntitlementPool"; @Override public Response createLimit(LimitRequestDto request, @@ -44,18 +46,19 @@ public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits { MdcUtil.initMdc(LoggerServiceName.Create_LIMIT.toString()); vendorLicenseManager.getEntitlementPool(new EntitlementPoolEntity(vlmId, Version.valueOf - (versionId), entitlementPoolId), user); + (versionId), entitlementPoolId), user); LimitEntity limitEntity = - new MapLimitRequestDtoToLimitEntity() - .applyMapping(request, LimitEntity.class); + new MapLimitRequestDtoToLimitEntity() + .applyMapping(request, LimitEntity.class); limitEntity.setEpLkgId(entitlementPoolId); limitEntity.setVendorLicenseModelId(vlmId); + limitEntity.setParent(parent); LimitEntity createdLimit = vendorLicenseManager.createLimit(limitEntity, user); MapLimitEntityToLimitCreationDto mapper = new MapLimitEntityToLimitCreationDto(); LimitCreationDto createdLimitDto = mapper.applyMapping(createdLimit, LimitCreationDto - .class); + .class); /*StringWrapperResponse result = createdLimit != null ? new StringWrapperResponse(createdLimit.getId()) @@ -65,24 +68,24 @@ public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits { //return Response.ok(result).build(); return Response.ok(createdLimitDto != null ? createdLimitDto : null) - .build(); + .build(); } @Override public Response listLimits(String vlmId, String versionId, String entitlementPoolId, String - user) { + user) { mdcDataDebugMessage.debugEntryMessage("VLM id", vlmId, "EP id", entitlementPoolId); MdcUtil.initMdc(LoggerServiceName.List_EP.toString()); vendorLicenseManager.getEntitlementPool(new EntitlementPoolEntity(vlmId, Version.valueOf - (versionId), entitlementPoolId), user); + (versionId), entitlementPoolId), user); Collection<LimitEntity> limits = - vendorLicenseManager.listLimits(vlmId, Version.valueOf(versionId), entitlementPoolId, user); + vendorLicenseManager.listLimits(vlmId, Version.valueOf(versionId), entitlementPoolId, user); GenericCollectionWrapper<LimitEntityDto> result = new GenericCollectionWrapper<>(); MapLimitEntityToLimitDto outputMapper = - new MapLimitEntityToLimitDto(); + new MapLimitEntityToLimitDto(); for (LimitEntity limit : limits) { result.add(outputMapper.applyMapping(limit, LimitEntityDto.class)); } @@ -96,12 +99,12 @@ public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits { public Response getLimit( String vlmId, String versionId, String entitlementPoolId, String limitId, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, EP id, Limit Id", vlmId, entitlementPoolId, - limitId); + limitId); MdcUtil.initMdc(LoggerServiceName.Get_LIMIT.toString()); vendorLicenseManager.getEntitlementPool(new EntitlementPoolEntity(vlmId, Version.valueOf - (versionId), entitlementPoolId), user); + (versionId), entitlementPoolId), user); LimitEntity epInput = new LimitEntity(); epInput.setVendorLicenseModelId(vlmId); epInput.setVersion(Version.valueOf(versionId)); @@ -110,11 +113,11 @@ public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits { LimitEntity limit = vendorLicenseManager.getLimit(epInput, user); LimitEntityDto entitlementPoolEntityDto = limit == null ? null : - new MapLimitEntityToLimitDto() - .applyMapping(limit, LimitEntityDto.class); + new MapLimitEntityToLimitDto() + .applyMapping(limit, LimitEntityDto.class); mdcDataDebugMessage.debugExitMessage("VLM id, EP id, Limit Id", vlmId, entitlementPoolId, - limitId); + limitId); return Response.ok(entitlementPoolEntityDto).build(); } @@ -127,39 +130,40 @@ public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits { String limitId, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id", vlmId, "EP id", entitlementPoolId, "limit Id", - limitId); + limitId); MdcUtil.initMdc(LoggerServiceName.Update_LIMIT.toString()); vendorLicenseManager.getEntitlementPool(new EntitlementPoolEntity(vlmId, Version.valueOf - (versionId), entitlementPoolId), user); + (versionId), entitlementPoolId), user); LimitEntity limitEntity = - new MapLimitRequestDtoToLimitEntity() - .applyMapping(request, LimitEntity.class); + new MapLimitRequestDtoToLimitEntity() + .applyMapping(request, LimitEntity.class); limitEntity.setEpLkgId(entitlementPoolId); limitEntity.setVendorLicenseModelId(vlmId); limitEntity.setId(limitId); + limitEntity.setParent(parent); vendorLicenseManager.updateLimit(limitEntity, user); mdcDataDebugMessage.debugExitMessage("VLM id", vlmId, "EP id", entitlementPoolId, "limit Id", - limitId); + limitId); return Response.ok().build(); } /** - * Delete entitlement pool. - * - * @param vlmId the vlm id - * @param entitlementPoolId the entitlement pool id - * @param limitId the limitId - * @param user the user - * @return the response + * Delete entitlement pool. + * + * @param vlmId the vlm id + * @param entitlementPoolId the entitlement pool id + * @param limitId the limitId + * @param user the user + * @return the response */ public Response deleteLimit(String vlmId, String versionId, String entitlementPoolId, - String limitId, String user) { + String limitId, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, Verison Id, EP id, Limit Id", vlmId, versionId, entitlementPoolId, limitId); MdcUtil.initMdc(LoggerServiceName.Delete_LIMIT.toString()); @@ -170,6 +174,8 @@ public class EntitlementPoolLimitsImpl implements EntitlementPoolLimits { limitInput.setVendorLicenseModelId(vlmId); limitInput.setEpLkgId(entitlementPoolId); limitInput.setId(limitId); + limitInput.setParent(parent); + vendorLicenseManager.deleteLimit(limitInput, user); mdcDataDebugMessage.debugExitMessage("VLM id, Verison Id, EP id, Limit Id", vlmId, versionId, entitlementPoolId, limitId); diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/LicenseKeyGroupLimitsImpl.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/LicenseKeyGroupLimitsImpl.java index 4c85cfa45f..bedbc928ed 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/LicenseKeyGroupLimitsImpl.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/LicenseKeyGroupLimitsImpl.java @@ -32,7 +32,9 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits { private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); private VendorLicenseManager vendorLicenseManager = - VendorLicenseManagerFactory.getInstance().createInterface(); + VendorLicenseManagerFactory.getInstance().createInterface(); + + public static final String parent = "LicenseKeyGroup"; @Override public Response createLimit(LimitRequestDto request, @@ -48,15 +50,16 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits { (versionId), licenseKeyGroupId), user); LimitEntity limitEntity = - new MapLimitRequestDtoToLimitEntity() - .applyMapping(request, LimitEntity.class); + new MapLimitRequestDtoToLimitEntity() + .applyMapping(request, LimitEntity.class); limitEntity.setEpLkgId(licenseKeyGroupId); limitEntity.setVendorLicenseModelId(vlmId); + limitEntity.setParent(parent); LimitEntity createdLimit = vendorLicenseManager.createLimit(limitEntity, user); MapLimitEntityToLimitCreationDto mapper = new MapLimitEntityToLimitCreationDto(); LimitCreationDto createdLimitDto = mapper.applyMapping(createdLimit, LimitCreationDto - .class); + .class); /*StringWrapperResponse result = createdLimit != null ? new StringWrapperResponse(createdLimit.getId()) : null;*/ @@ -65,24 +68,24 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits { //return Response.ok(result).build(); return Response.ok(createdLimitDto != null ? createdLimitDto : null) - .build(); + .build(); } @Override public Response listLimits(String vlmId, String versionId, String licenseKeyGroupId, String - user) { + user) { mdcDataDebugMessage.debugEntryMessage("VLM id", vlmId, "LKG id", licenseKeyGroupId); MdcUtil.initMdc(LoggerServiceName.List_EP.toString()); vendorLicenseManager.getLicenseKeyGroup(new LicenseKeyGroupEntity(vlmId, Version.valueOf - (versionId), licenseKeyGroupId), user); + (versionId), licenseKeyGroupId), user); Collection<LimitEntity> limits = - vendorLicenseManager.listLimits(vlmId, Version.valueOf(versionId), licenseKeyGroupId, user); + vendorLicenseManager.listLimits(vlmId, Version.valueOf(versionId), licenseKeyGroupId, user); GenericCollectionWrapper<LimitEntityDto> result = new GenericCollectionWrapper<>(); MapLimitEntityToLimitDto outputMapper = - new MapLimitEntityToLimitDto(); + new MapLimitEntityToLimitDto(); for (LimitEntity limit : limits) { result.add(outputMapper.applyMapping(limit, LimitEntityDto.class)); } @@ -100,24 +103,25 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits { String limitId, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id", vlmId, "LKG id", licenseKeyGroupId, "limit Id", - limitId); + limitId); MdcUtil.initMdc(LoggerServiceName.Update_LIMIT.toString()); vendorLicenseManager.getLicenseKeyGroup(new LicenseKeyGroupEntity(vlmId, Version.valueOf - (versionId), licenseKeyGroupId), user); + (versionId), licenseKeyGroupId), user); LimitEntity limitEntity = - new MapLimitRequestDtoToLimitEntity() - .applyMapping(request, LimitEntity.class); + new MapLimitRequestDtoToLimitEntity() + .applyMapping(request, LimitEntity.class); limitEntity.setEpLkgId(licenseKeyGroupId); limitEntity.setVendorLicenseModelId(vlmId); limitEntity.setId(limitId); + limitEntity.setParent(parent); vendorLicenseManager.updateLimit(limitEntity, user); mdcDataDebugMessage.debugExitMessage("VLM id", vlmId, "LKG id", licenseKeyGroupId, "limit Id", - limitId); + limitId); return Response.ok().build(); } @@ -134,20 +138,22 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits { public Response deleteLimit(String vlmId, String versionId, String licenseKeyGroupId, String limitId, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, Verison Id, LKG id, Limit Id", vlmId, versionId, - licenseKeyGroupId, limitId); + licenseKeyGroupId, limitId); MdcUtil.initMdc(LoggerServiceName.Delete_LIMIT.toString()); vendorLicenseManager.getLicenseKeyGroup(new LicenseKeyGroupEntity(vlmId, Version.valueOf - (versionId), licenseKeyGroupId), user); + (versionId), licenseKeyGroupId), user); LimitEntity limitInput = new LimitEntity(); limitInput.setVendorLicenseModelId(vlmId); limitInput.setEpLkgId(licenseKeyGroupId); limitInput.setId(limitId); + limitInput.setParent(parent); + vendorLicenseManager.deleteLimit(limitInput, user); mdcDataDebugMessage.debugExitMessage("VLM id, Verison Id, LKG id, Limit Id", vlmId, versionId, - licenseKeyGroupId, limitId); + licenseKeyGroupId, limitId); return Response.ok().build(); } @@ -156,11 +162,11 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits { public Response getLimit( String vlmId, String versionId, String licenseKeyGroupId, String limitId, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, LKG id, Limit Id", vlmId, licenseKeyGroupId, - limitId); + limitId); MdcUtil.initMdc(LoggerServiceName.Get_LIMIT.toString()); vendorLicenseManager.getLicenseKeyGroup(new LicenseKeyGroupEntity(vlmId, Version.valueOf - (versionId), licenseKeyGroupId), user); + (versionId), licenseKeyGroupId), user); LimitEntity epInput = new LimitEntity(); epInput.setVendorLicenseModelId(vlmId); epInput.setVersion(Version.valueOf(versionId)); @@ -169,11 +175,11 @@ public class LicenseKeyGroupLimitsImpl implements LicenseKeyGroupLimits { LimitEntity limit = vendorLicenseManager.getLimit(epInput, user); LimitEntityDto entitlementPoolEntityDto = limit == null ? null : - new MapLimitEntityToLimitDto() - .applyMapping(limit, LimitEntityDto.class); + new MapLimitEntityToLimitDto() + .applyMapping(limit, LimitEntityDto.class); mdcDataDebugMessage.debugExitMessage("VLM id, LKG id, Limit Id", vlmId, licenseKeyGroupId, - limitId); + limitId); return Response.ok(entitlementPoolEntityDto).build(); } diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/pom.xml b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/pom.xml index f146881751..d65e9e6b27 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/pom.xml +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/pom.xml @@ -102,11 +102,11 @@ <artifactId>woodstox-core-asl</artifactId> <version>${woodstox.version}</version> </dependency> - <dependency> + <!--dependency> <groupId>org.openecomp.sdc</groupId> <artifactId>openecomp-sdc-vendor-software-product-manager</artifactId> <version>${project.version}</version> - </dependency> + </dependency--> <dependency> <groupId>com.sun.jersey.contribs</groupId> <artifactId>jersey-multipart</artifactId> diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/ComponentProcesses.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/ComponentProcesses.java index ca50ef1426..edb3b5bfc2 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/ComponentProcesses.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/ComponentProcesses.java @@ -20,35 +20,24 @@ package org.openecomp.sdcrests.vsp.rest; -import static org.openecomp.sdcrests.common.RestConstants.USER_ID_HEADER_PARAM; -import static org.openecomp.sdcrests.common.RestConstants.USER_MISSING_ERROR_MSG; - import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.cxf.jaxrs.ext.multipart.Attachment; import org.apache.cxf.jaxrs.ext.multipart.Multipart; -import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdcrests.vendorsoftwareproducts.types.ProcessEntityDto; import org.openecomp.sdcrests.vendorsoftwareproducts.types.ProcessRequestDto; import org.springframework.validation.annotation.Validated; import javax.validation.Valid; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Pattern; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; +import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import static org.openecomp.sdcrests.common.RestConstants.USER_ID_HEADER_PARAM; +import static org.openecomp.sdcrests.common.RestConstants.USER_MISSING_ERROR_MSG; + @Path("/v1.0/vendor-software-products/{vspId}/versions/{versionId}/components/{componentId}/processes") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/OrchestrationTemplateCandidate.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/OrchestrationTemplateCandidate.java index fbf29185e3..fa7f421fc8 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/OrchestrationTemplateCandidate.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/OrchestrationTemplateCandidate.java @@ -23,6 +23,7 @@ package org.openecomp.sdcrests.vsp.rest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.apache.cxf.jaxrs.ext.multipart.Attachment; import org.apache.cxf.jaxrs.ext.multipart.Multipart; import org.openecomp.sdc.vendorsoftwareproduct.types.FileDataStructureDto; import org.openecomp.sdcrests.vendorsoftwareproducts.types.UploadFileResponseDto; @@ -61,7 +62,7 @@ public interface OrchestrationTemplateCandidate extends VspEntities { Response upload( @PathParam("vspId") String vspId, @ApiParam(value = "Version Id") @PathParam("versionId") String versionId, - @Multipart("upload") InputStream heatFileToUpload, + @Multipart("upload") Attachment fileToUpload, @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(USER_ID_HEADER_PARAM) String user); @GET diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapUploadFileResponseToUploadFileResponseDto.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapUploadFileResponseToUploadFileResponseDto.java index cccfd02371..48053d053d 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapUploadFileResponseToUploadFileResponseDto.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapUploadFileResponseToUploadFileResponseDto.java @@ -34,5 +34,7 @@ public class MapUploadFileResponseToUploadFileResponseDto public void doMapping(UploadFileResponse source, UploadFileResponseDto target) { target.setStatus(source.getStatus()); target.setErrors(source.getErrors()); + target.setOnboardingOrigin(source.getOnboardingType().toString()); + target.setNetworkPackageName(source.getNetworkPackageName()); } } diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapValidationResponseToDto.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapValidationResponseToDto.java index 89d210f372..3cabebbb69 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapValidationResponseToDto.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapValidationResponseToDto.java @@ -24,8 +24,6 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.openecomp.sdc.common.errors.ErrorCode; import org.openecomp.sdc.datatypes.error.ErrorMessage; -import org.openecomp.sdc.vendorsoftwareproduct.types.ComponentValidationResult; -import org.openecomp.sdc.vendorsoftwareproduct.types.DeploymentFlavorValidationResult; import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireValidationResult; import org.openecomp.sdc.vendorsoftwareproduct.types.ValidationResponse; import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData; @@ -49,37 +47,37 @@ import java.util.Set; import java.util.stream.Collectors; public class MapValidationResponseToDto - extends MappingBase<ValidationResponse, ValidationResponseDto> { + extends MappingBase<ValidationResponse, ValidationResponseDto> { private static Map<String, List<ErrorMessageDto>> mapUploadDataErrors( - Map<String, List<ErrorMessage>> uploadDataErrors) { + Map<String, List<ErrorMessage>> uploadDataErrors) { if (MapUtils.isEmpty(uploadDataErrors)) { return null; } return uploadDataErrors.entrySet().stream().collect( - Collectors.toMap(entry -> entry.getKey(), entry -> mapErrorMessages(entry.getValue()))); + Collectors.toMap(entry -> entry.getKey(), entry -> mapErrorMessages(entry.getValue()))); } private static QuestionnaireValidationResultDto mapQuestionnaireValidationResult( - QuestionnaireValidationResult questionnaireValidationResult) { + QuestionnaireValidationResult questionnaireValidationResult) { if (Objects.isNull(questionnaireValidationResult) - || Objects.isNull(questionnaireValidationResult.getValidationData())) { + || Objects.isNull(questionnaireValidationResult.getValidationData())) { return null; } QuestionnaireValidationResultDto questionnaireValidationResultDto = - new QuestionnaireValidationResultDto(); + new QuestionnaireValidationResultDto(); questionnaireValidationResultDto.setValid(questionnaireValidationResult.isValid()); Set<CompositionEntityValidationDataDto> validationDataDto = new HashSet<>(); for(CompositionEntityValidationData validationData : questionnaireValidationResult.getValidationData()){ validationDataDto.add(new MapCompositionEntityValidationDataToDto().applyMapping - (validationData, CompositionEntityValidationDataDto.class)); + (validationData, CompositionEntityValidationDataDto.class)); } questionnaireValidationResultDto.setValidationData(validationDataDto); return questionnaireValidationResultDto; } - private static ComponentValidationResultDto mapcomponentValidationResult( + /*private static ComponentValidationResultDto mapcomponentValidationResult( ComponentValidationResult componentValidationResult) { if (componentValidationResult == null) { return null; @@ -115,18 +113,18 @@ public class MapValidationResponseToDto deploymentFlavorValidationResultDto.setValidationData(validationDataDto); return deploymentFlavorValidationResultDto; - } + }*/ private static List<ErrorMessageDto> mapErrorMessages(List<ErrorMessage> errorMessages) { return errorMessages == null ? null : errorMessages.stream().map( - errorMessage -> new MapErrorMessageToDto() - .applyMapping(errorMessage, ErrorMessageDto.class)).collect(Collectors.toList()); + errorMessage -> new MapErrorMessageToDto() + .applyMapping(errorMessage, ErrorMessageDto.class)).collect(Collectors.toList()); } private static Collection<ErrorCodeDto> mapErrorCodes(Collection<ErrorCode> errorCodes) { return CollectionUtils.isEmpty(errorCodes) ? null : errorCodes.stream() - .map(errorCode -> new MapErrorCodeToDto().applyMapping(errorCode, ErrorCodeDto.class)) - .collect(Collectors.toList()); + .map(errorCode -> new MapErrorCodeToDto().applyMapping(errorCode, ErrorCodeDto.class)) + .collect(Collectors.toList()); } @Override @@ -136,8 +134,6 @@ public class MapValidationResponseToDto target.setLicensingDataErrors(mapErrorCodes(source.getLicensingDataErrors())); target.setUploadDataErrors(mapUploadDataErrors(source.getUploadDataErrors())); target.setQuestionnaireValidationResult( - mapQuestionnaireValidationResult(source.getQuestionnaireValidationResult())); - target.setComponentValidationResult(mapcomponentValidationResult(source.getComponentValidationResult())); - target.setDeploymentFlavorValidationResult(mapdeploymentFlavorValidationResult(source.getDeploymentFlavorValidationResult())); + mapQuestionnaireValidationResult(source.getQuestionnaireValidationResult())); } } diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapVersionedVendorSoftwareProductInfoToVspDetailsDto.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapVersionedVendorSoftwareProductInfoToVspDetailsDto.java index 9093da599f..815135f834 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapVersionedVendorSoftwareProductInfoToVspDetailsDto.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapVersionedVendorSoftwareProductInfoToVspDetailsDto.java @@ -45,8 +45,10 @@ public class MapVersionedVendorSoftwareProductInfoToVspDetailsDto target.setSubCategory(vsp.getSubCategory()); target.setVendorId(vsp.getVendorId()); target.setVendorName(vsp.getVendorName()); + target.setOnboardingOrigin(vsp.getOnboardingOrigin()); target.setLicensingVersion(vsp.getVlmVersion() == null ? null : new VersionDto(vsp.getVlmVersion().toString(), vsp.getVlmVersion().toString())); target.setIsOldVersion("False"); + target.setNetworkPackageName(vsp.getNetworkPackageName()); if (vsp.getLicenseAgreement() != null || vsp.getFeatureGroups() != null) { LicensingData licensingData = new LicensingData(); diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapVspDescriptionDtoToVspDetails.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapVspDescriptionDtoToVspDetails.java index 9808bbb2b6..ba3d92e5d2 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapVspDescriptionDtoToVspDetails.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/mapping/MapVspDescriptionDtoToVspDetails.java @@ -39,6 +39,8 @@ public class MapVspDescriptionDtoToVspDetails extends MappingBase<VspDescription target.setVendorName(source.getVendorName()); target.setVendorId(source.getVendorId()); target.setOnboardingMethod(source.getOnboardingMethod()); + target.setOnboardingOrigin(source.getOnboardingOrigin()); + target.setNetworkPackageName(source.getNetworkPackageName()); VersionDto vlmVersion = source.getLicensingVersion(); if (vlmVersion != null) { diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/OrchestrationTemplateCandidateImpl.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/OrchestrationTemplateCandidateImpl.java index 0793e9473e..07cef57251 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/OrchestrationTemplateCandidateImpl.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/OrchestrationTemplateCandidateImpl.java @@ -1,10 +1,10 @@ package org.openecomp.sdcrests.vsp.rest.services; import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.lang3.tuple.Pair; +import org.apache.cxf.jaxrs.ext.multipart.Attachment; import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder; import org.openecomp.sdc.common.errors.Messages; -import org.openecomp.sdc.datatypes.error.ErrorLevel; -import org.openecomp.sdc.datatypes.error.ErrorMessage; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdc.logging.context.MdcUtil; @@ -32,11 +32,11 @@ import javax.ws.rs.core.Response; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.InvocationTargetException; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; import java.util.Optional; +import static org.openecomp.core.utilities.file.FileUtils.getFileExtension; +import static org.openecomp.core.utilities.file.FileUtils.getNetworkPackageName; + @Named @Service("orchestrationTemplateCandidate") @Scope(value = "prototype") @@ -48,31 +48,35 @@ public class OrchestrationTemplateCandidateImpl implements OrchestrationTemplate LoggerFactory.getLogger(OrchestrationTemplateCandidateImpl.class); @Override - public Response upload(String vspId, String versionId, InputStream heatFileToUpload, + public Response upload(String vspId, String versionId, Attachment fileToUpload, String user) { MdcUtil.initMdc(LoggerServiceName.Upload_File.toString()); logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.UPLOAD_HEAT + vspId); - + String filename = fileToUpload.getContentDisposition().getParameter("filename"); UploadFileResponse uploadFileResponse = candidateManager .upload(vspId, resolveVspVersion(vspId, null, user, VersionableEntityAction - .Write), heatFileToUpload, user); + .Write), fileToUpload.getObject(InputStream.class), user, getFileExtension(filename), + getNetworkPackageName(filename)); UploadFileResponseDto uploadFileResponseDto = new MapUploadFileResponseToUploadFileResponseDto() .applyMapping(uploadFileResponse, UploadFileResponseDto.class); return Response.ok(uploadFileResponseDto).build(); } + + @Override public Response get(String vspId, String versionId, String user) throws IOException { - Optional<byte[]> zipFile = - candidateManager - .get(vspId, resolveVspVersion(vspId, null, user, VersionableEntityAction.Read), user); + + Optional<Pair<String, byte[]>> zipFile = candidateManager + .get(vspId, resolveVspVersion(vspId, null, user, VersionableEntityAction.Read), user); if (!zipFile.isPresent()) { return Response.status(Response.Status.NOT_FOUND).build(); } - Response.ResponseBuilder response = Response.ok(zipFile.get()); - response.header("Content-Disposition", "attachment; filename=HeatCandidate.zip"); + Response.ResponseBuilder response = Response.ok(zipFile.get().getRight()); + String filename = "Candidate." + zipFile.get().getLeft(); + response.header("Content-Disposition", "attachment; filename=" + filename); return response.build(); } diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/VendorSoftwareProductsImpl.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/VendorSoftwareProductsImpl.java index 8f2e73bff6..0b73cbcee6 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/VendorSoftwareProductsImpl.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/VendorSoftwareProductsImpl.java @@ -47,14 +47,7 @@ import org.openecomp.sdc.vendorsoftwareproduct.types.VersionedVendorSoftwareProd import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.VersionInfo; import org.openecomp.sdc.versioning.types.VersionableEntityAction; -import org.openecomp.sdcrests.vendorsoftwareproducts.types.PackageInfoDto; -import org.openecomp.sdcrests.vendorsoftwareproducts.types.QuestionnaireResponseDto; -import org.openecomp.sdcrests.vendorsoftwareproducts.types.ValidationResponseDto; -import org.openecomp.sdcrests.vendorsoftwareproducts.types.VersionSoftwareProductActionRequestDto; -import org.openecomp.sdcrests.vendorsoftwareproducts.types.VspComputeDto; -import org.openecomp.sdcrests.vendorsoftwareproducts.types.VspCreationDto; -import org.openecomp.sdcrests.vendorsoftwareproducts.types.VspDescriptionDto; -import org.openecomp.sdcrests.vendorsoftwareproducts.types.VspDetailsDto; +import org.openecomp.sdcrests.vendorsoftwareproducts.types.*; import org.openecomp.sdcrests.vsp.rest.VendorSoftwareProducts; import org.openecomp.sdcrests.vsp.rest.mapping.MapComputeEntityToVspComputeDto; import org.openecomp.sdcrests.vsp.rest.mapping.MapPackageInfoToPackageInfoDto; @@ -100,9 +93,13 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts { + vspDescriptionDto.getName()); VspCreationDto vspCreationDto = null; - switch (vspDescriptionDto.getOnboardingMethod()) { - case "HEAT": - case "Manual": + OnboardingMethod onboardingMethod = OnboardingMethod.valueOf(vspDescriptionDto.getOnboardingMethod()); + if (onboardingMethod == null){ + return handleUnkownOnboardingMethod(); + } + switch (onboardingMethod) { + case NetworkPackage: + case Manual: VspDetails vspDetails = new MapVspDescriptionDtoToVspDetails(). applyMapping(vspDescriptionDto, VspDetails.class); @@ -112,17 +109,21 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts { vspCreationDto = mapping.applyMapping(vspDetails, VspCreationDto.class); break; default: - ErrorCode onboardingMethodUpdateErrorCode = OnboardingMethodErrorBuilder - .getInvalidOnboardingMethodErrorBuilder(); - MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API, - LoggerTragetServiceName.ADD_VSP, ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), onboardingMethodUpdateErrorCode.message()); - throw new CoreException(onboardingMethodUpdateErrorCode); + return handleUnkownOnboardingMethod(); } return Response.ok(vspCreationDto).build(); } + private Response handleUnkownOnboardingMethod() { + ErrorCode onboardingMethodUpdateErrorCode = OnboardingMethodErrorBuilder + .getInvalidOnboardingMethodErrorBuilder(); + MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API, + LoggerTragetServiceName.ADD_VSP, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), onboardingMethodUpdateErrorCode.message()); + throw new CoreException(onboardingMethodUpdateErrorCode); + } + @Override public Response listVsps(String versionFilter, String user) { MdcUtil.initMdc(LoggerServiceName.List_VSP.toString()); diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/OnboardingMethod.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/OnboardingMethod.java index 3059efb171..0db4b0476d 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/OnboardingMethod.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/OnboardingMethod.java @@ -1,6 +1,6 @@ package org.openecomp.sdcrests.vendorsoftwareproducts.types; public enum OnboardingMethod { - HEAT, + NetworkPackage, Manual; } diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/UploadFileResponseDto.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/UploadFileResponseDto.java index a79c70a4d2..3bf2e8ced1 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/UploadFileResponseDto.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/UploadFileResponseDto.java @@ -32,6 +32,8 @@ import java.util.Map; public class UploadFileResponseDto { private Map<String, List<ErrorMessage>> errors; private UploadFileStatus status; + private String onboardingOrigin; + private String networkPackageName; public Map<String, List<ErrorMessage>> getErrors() { return errors; @@ -49,4 +51,19 @@ public class UploadFileResponseDto { this.status = status; } + public String getOnboardingOrigin() { + return onboardingOrigin; + } + + public void setOnboardingOrigin(String onboardingOrigin) { + this.onboardingOrigin = onboardingOrigin; + } + + public String getNetworkPackageName() { + return networkPackageName; + } + + public void setNetworkPackageName(String networkPackageName) { + this.networkPackageName = networkPackageName; + } } diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/VspDescriptionDto.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/VspDescriptionDto.java index 80b68deeeb..9062f89d22 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/VspDescriptionDto.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/VspDescriptionDto.java @@ -44,6 +44,8 @@ public class VspDescriptionDto { @NotNull private String onboardingMethod; + private String onboardingOrigin; + private String networkPackageName; public String getName() { return name; @@ -124,4 +126,20 @@ public class VspDescriptionDto { public void setOnboardingMethod(String onboardingMethod) { this.onboardingMethod = onboardingMethod; } + + public String getOnboardingOrigin() { + return onboardingOrigin; + } + + public void setOnboardingOrigin(String onboardingOrigin) { + this.onboardingOrigin = onboardingOrigin; + } + + public String getNetworkPackageName() { + return networkPackageName; + } + + public void setNetworkPackageName(String networkPackageName) { + this.networkPackageName = networkPackageName; + } } diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/VspDetailsDto.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/VspDetailsDto.java index d105acb406..28a77f2e66 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/VspDetailsDto.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-types/src/main/java/org/openecomp/sdcrests/vendorsoftwareproducts/types/VspDetailsDto.java @@ -41,7 +41,8 @@ public class VspDetailsDto extends VspDescriptionDto { private String lockingUser; private ValidationStructureList validationData; private String isOldVersion; - + private String onboardingOrigin; + private String networkPackageName; public String getId() { return id; } @@ -104,8 +105,21 @@ public class VspDetailsDto extends VspDescriptionDto { public void setValidationData(ValidationStructureList validationData) { this.validationData = validationData; + } + + public String getOnboardingOrigin() { + return onboardingOrigin; + } + public void setOnboardingOrigin(String onboardingOrigin) { + this.onboardingOrigin = onboardingOrigin; + } + public String getNetworkPackageName() { + return networkPackageName; } + public void setNetworkPackageName(String networkPackageName) { + this.networkPackageName = networkPackageName; + } } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/main/java/org/openecomp/sdc/vendorlicense/impl/VendorLicenseManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/main/java/org/openecomp/sdc/vendorlicense/impl/VendorLicenseManagerImpl.java index a755fe8957..1acd44511a 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/main/java/org/openecomp/sdc/vendorlicense/impl/VendorLicenseManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/main/java/org/openecomp/sdc/vendorlicense/impl/VendorLicenseManagerImpl.java @@ -98,7 +98,7 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); private static final Logger logger = - LoggerFactory.getLogger(VendorLicenseManagerImpl.class); + LoggerFactory.getLogger(VendorLicenseManagerImpl.class); public VendorLicenseManagerImpl(VersioningManager versioningManager, VendorLicenseFacade vendorLicenseFacade, @@ -122,9 +122,9 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { private static void sortVlmListByModificationTimeDescOrder( - List<VersionedVendorLicenseModel> vendorLicenseModels) { + List<VersionedVendorLicenseModel> vendorLicenseModels) { vendorLicenseModels.sort((o1, o2) -> o2.getVendorLicenseModel().getWritetimeMicroSeconds() - .compareTo(o1.getVendorLicenseModel().getWritetimeMicroSeconds())); + .compareTo(o1.getVendorLicenseModel().getWritetimeMicroSeconds())); } @Override @@ -133,7 +133,7 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { mdcDataDebugMessage.debugEntryMessage("VLM id", vendorLicenseModelId); Version newVersion = versioningManager - .checkout(VENDOR_LICENSE_MODEL_VERSIONABLE_TYPE, vendorLicenseModelId, user); + .checkout(VENDOR_LICENSE_MODEL_VERSIONABLE_TYPE, vendorLicenseModelId, user); ActivityLogEntity activityLogEntity = new ActivityLogEntity(vendorLicenseModelId, String.valueOf(newVersion.getMajor()+1), ActivityType.CHECKOUT.toString(), user, true, "", ""); @@ -151,7 +151,7 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { mdcDataDebugMessage.debugEntryMessage("VLM id", vendorLicenseModelId); Version newVersion = versioningManager - .undoCheckout(VENDOR_LICENSE_MODEL_VERSIONABLE_TYPE, vendorLicenseModelId, user); + .undoCheckout(VENDOR_LICENSE_MODEL_VERSIONABLE_TYPE, vendorLicenseModelId, user); vendorLicenseFacade.updateVlmLastModificationTime(vendorLicenseModelId, newVersion); mdcDataDebugMessage.debugExitMessage("VLM id", vendorLicenseModelId); @@ -191,8 +191,8 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { mdcDataDebugMessage.debugEntryMessage(null); Map<String, VersionInfo> idToVersionsInfo = versioningManager - .listEntitiesVersionInfo(VENDOR_LICENSE_MODEL_VERSIONABLE_TYPE, user, - VersionableEntityAction.Read); + .listEntitiesVersionInfo(VENDOR_LICENSE_MODEL_VERSIONABLE_TYPE, user, + VersionableEntityAction.Read); List<VersionedVendorLicenseModel> vendorLicenseModels = new ArrayList<>(); for (Map.Entry<String, VersionInfo> entry : idToVersionsInfo.entrySet()) { @@ -213,7 +213,7 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { try { VendorLicenseModelEntity vlm = - vendorLicenseModelDao.get(new VendorLicenseModelEntity(entry.getKey(), version)); + vendorLicenseModelDao.get(new VendorLicenseModelEntity(entry.getKey(), version)); if (vlm != null) { VersionedVendorLicenseModel versionedVlm = new VersionedVendorLicenseModel(); versionedVlm.setVendorLicenseModel(vlm); @@ -221,11 +221,11 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { vendorLicenseModels.add(versionedVlm); } }catch(RuntimeException rte){ - logger.error("Error trying to retrieve vlm["+entry.getKey()+"] version["+version.toString - ()+"] " + - "message:"+rte - .getMessage()); - } + logger.error("Error trying to retrieve vlm["+entry.getKey()+"] version["+version.toString + ()+"] " + + "message:"+rte + .getMessage()); + } } sortVlmListByModificationTimeDescOrder(vendorLicenseModels); @@ -253,18 +253,18 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { mdcDataDebugMessage.debugEntryMessage("VLM id", vendorLicenseModelEntity.getId()); Version version = resloveVersion(vendorLicenseModelEntity.getId(),null, - getVersionInfo(vendorLicenseModelEntity.getId(), VersionableEntityAction.Write, user), - user); + getVersionInfo(vendorLicenseModelEntity.getId(), VersionableEntityAction.Write, user), + user); vendorLicenseModelEntity.setVersion(version); String existingVendorName = vendorLicenseModelDao.get(vendorLicenseModelEntity).getVendorName(); updateUniqueName(VendorLicenseConstants.UniqueValues.VENDOR_NAME, existingVendorName, - vendorLicenseModelEntity.getVendorName()); + vendorLicenseModelEntity.getVendorName()); vendorLicenseModelDao.update(vendorLicenseModelEntity); vendorLicenseFacade - .updateVlmLastModificationTime(vendorLicenseModelEntity.getId(), version); + .updateVlmLastModificationTime(vendorLicenseModelEntity.getId(), version); mdcDataDebugMessage.debugExitMessage("VLM id", vendorLicenseModelEntity.getId()); } @@ -278,8 +278,8 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { @Override public void deleteVendorLicenseModel(String vlmId, String user) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.DELETE_ENTITY, ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.UNSUPPORTED_OPERATION); + LoggerTragetServiceName.DELETE_ENTITY, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.UNSUPPORTED_OPERATION); throw new UnsupportedOperationException(VendorLicenseConstants.UNSUPPORTED_OPERATION_ERROR); } @@ -289,7 +289,7 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { mdcDataDebugMessage.debugEntryMessage("VLM id", vlmId); mdcDataDebugMessage.debugExitMessage("VLM id", vlmId); LicenseAgreementEntity licenseAgreementEntity = createLicenseAgreementForList(vlmId, version, - user); + user); // return licenseAgreementDao.list(new LicenseAgreementEntity(vlmId, VersioningUtil // .resolveVersion(version, getVersionInfo(vlmId, VersionableEntityAction.Read, user), user), // null)); @@ -300,9 +300,9 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { public LicenseAgreementEntity createLicenseAgreement(LicenseAgreementEntity licenseAgreement, String user) { mdcDataDebugMessage - .debugEntryMessage("VLM id", licenseAgreement.getVendorLicenseModelId()); + .debugEntryMessage("VLM id", licenseAgreement.getVendorLicenseModelId()); mdcDataDebugMessage - .debugExitMessage("VLM id", licenseAgreement.getVendorLicenseModelId()); + .debugExitMessage("VLM id", licenseAgreement.getVendorLicenseModelId()); return vendorLicenseFacade.createLicenseAgreement(licenseAgreement, user); } @@ -311,35 +311,35 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { Set<String> addedFeatureGroupIds, Set<String> removedFeatureGroupIds, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, LA id", licenseAgreement - .getVendorLicenseModelId(), licenseAgreement.getId()); + .getVendorLicenseModelId(), licenseAgreement.getId()); Version version = VersioningUtil.resolveVersion(licenseAgreement.getVersion(), - getVersionInfo(licenseAgreement.getVendorLicenseModelId(), VersionableEntityAction.Write, - user), user); + getVersionInfo(licenseAgreement.getVendorLicenseModelId(), VersionableEntityAction.Write, + user), user); licenseAgreement.setVersion(version); LicenseAgreementEntity retrieved = licenseAgreementDao.get(licenseAgreement); VersioningUtil - .validateEntityExistence(retrieved, licenseAgreement, VendorLicenseModelEntity.ENTITY_TYPE); + .validateEntityExistence(retrieved, licenseAgreement, VendorLicenseModelEntity.ENTITY_TYPE); VersioningUtil.validateContainedEntitiesExistence(new FeatureGroupEntity().getEntityType(), - removedFeatureGroupIds, retrieved, retrieved.getFeatureGroupIds()); + removedFeatureGroupIds, retrieved, retrieved.getFeatureGroupIds()); VersioningUtil.validateEntitiesExistence(addedFeatureGroupIds, - new FeatureGroupEntity(licenseAgreement.getVendorLicenseModelId(), version, null), - featureGroupDao, VendorLicenseModelEntity.ENTITY_TYPE); + new FeatureGroupEntity(licenseAgreement.getVendorLicenseModelId(), version, null), + featureGroupDao, VendorLicenseModelEntity.ENTITY_TYPE); updateUniqueName(VendorLicenseConstants.UniqueValues.LICENSE_AGREEMENT_NAME, - retrieved.getName(), licenseAgreement.getName(), licenseAgreement.getVendorLicenseModelId(), - licenseAgreement.getVersion().toString()); + retrieved.getName(), licenseAgreement.getName(), licenseAgreement.getVendorLicenseModelId(), + licenseAgreement.getVersion().toString()); licenseAgreementDao.updateColumnsAndDeltaFeatureGroupIds(licenseAgreement, addedFeatureGroupIds, - removedFeatureGroupIds); + removedFeatureGroupIds); addFeatureGroupsToLicenseAgreementRef(addedFeatureGroupIds, licenseAgreement); removeFeatureGroupsToLicenseAgreementRef(removedFeatureGroupIds, licenseAgreement); vendorLicenseFacade - .updateVlmLastModificationTime(licenseAgreement.getVendorLicenseModelId(), version); + .updateVlmLastModificationTime(licenseAgreement.getVendorLicenseModelId(), version); mdcDataDebugMessage.debugExitMessage("VLM id, LA id", licenseAgreement - .getVendorLicenseModelId(), licenseAgreement.getId()); + .getVendorLicenseModelId(), licenseAgreement.getId()); } @Override @@ -357,9 +357,9 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { mdcDataDebugMessage.debugEntryMessage("VLM id, LA id", vlmId, licenseAgreementId); version = VersioningUtil - .resolveVersion(version, getVersionInfo(vlmId, VersionableEntityAction.Write, user), user); + .resolveVersion(version, getVersionInfo(vlmId, VersionableEntityAction.Write, user), user); LicenseAgreementEntity input = - new LicenseAgreementEntity(vlmId, version, licenseAgreementId); + new LicenseAgreementEntity(vlmId, version, licenseAgreementId); LicenseAgreementEntity retrieved = licenseAgreementDao.get(input); VersioningUtil.validateEntityExistence(retrieved, input, VendorLicenseModelEntity.ENTITY_TYPE); @@ -368,11 +368,11 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { licenseAgreementDao.delete(retrieved); deleteUniqueName(VendorLicenseConstants.UniqueValues.LICENSE_AGREEMENT_NAME, - retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(), - retrieved.getName()); + retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(), + retrieved.getName()); vendorLicenseFacade - .updateVlmLastModificationTime(input.getVendorLicenseModelId(), input.getVersion()); + .updateVlmLastModificationTime(input.getVendorLicenseModelId(), input.getVersion()); mdcDataDebugMessage.debugExitMessage("VLM id, LA id", vlmId, licenseAgreementId); } @@ -388,7 +388,7 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { @Override public FeatureGroupEntity createFeatureGroup(FeatureGroupEntity featureGroup, String user) { mdcDataDebugMessage - .debugEntryMessage("VLM id", featureGroup.getVendorLicenseModelId()); + .debugEntryMessage("VLM id", featureGroup.getVendorLicenseModelId()); mdcDataDebugMessage.debugExitMessage("VLM id", featureGroup.getId()); return vendorLicenseFacade.createFeatureGroup(featureGroup, user); } @@ -401,32 +401,32 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { Set<String> removedEntitlementPools, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, FG id", featureGroup - .getVendorLicenseModelId(), featureGroup.getId()); + .getVendorLicenseModelId(), featureGroup.getId()); Version version = VersioningUtil.resolveVersion(featureGroup.getVersion(), - getVersionInfo(featureGroup.getVendorLicenseModelId(), VersionableEntityAction.Write, user), - user); + getVersionInfo(featureGroup.getVendorLicenseModelId(), VersionableEntityAction.Write, user), + user); featureGroup.setVersion(version); FeatureGroupEntity retrieved = featureGroupDao.get(featureGroup); VersioningUtil - .validateEntityExistence(retrieved, featureGroup, VendorLicenseModelEntity.ENTITY_TYPE); + .validateEntityExistence(retrieved, featureGroup, VendorLicenseModelEntity.ENTITY_TYPE); VersioningUtil.validateContainedEntitiesExistence(new LicenseKeyGroupEntity().getEntityType(), - removedLicenseKeyGroups, retrieved, retrieved.getLicenseKeyGroupIds()); + removedLicenseKeyGroups, retrieved, retrieved.getLicenseKeyGroupIds()); VersioningUtil.validateContainedEntitiesExistence(new EntitlementPoolEntity().getEntityType(), - removedEntitlementPools, retrieved, retrieved.getEntitlementPoolIds()); + removedEntitlementPools, retrieved, retrieved.getEntitlementPoolIds()); VersioningUtil.validateEntitiesExistence(addedLicenseKeyGroups, - new LicenseKeyGroupEntity(featureGroup.getVendorLicenseModelId(), version, null), - licenseKeyGroupDao, VendorLicenseModelEntity.ENTITY_TYPE); + new LicenseKeyGroupEntity(featureGroup.getVendorLicenseModelId(), version, null), + licenseKeyGroupDao, VendorLicenseModelEntity.ENTITY_TYPE); VersioningUtil.validateEntitiesExistence(addedEntitlementPools, - new EntitlementPoolEntity(featureGroup.getVendorLicenseModelId(), version, null), - entitlementPoolDao, VendorLicenseModelEntity.ENTITY_TYPE); + new EntitlementPoolEntity(featureGroup.getVendorLicenseModelId(), version, null), + entitlementPoolDao, VendorLicenseModelEntity.ENTITY_TYPE); updateUniqueName(VendorLicenseConstants.UniqueValues.FEATURE_GROUP_NAME, - retrieved.getName(), featureGroup.getName(), featureGroup.getVendorLicenseModelId(), - featureGroup.getVersion().toString()); + retrieved.getName(), featureGroup.getName(), featureGroup.getVendorLicenseModelId(), + featureGroup.getVersion().toString()); addLicenseKeyGroupsToFeatureGroupsRef(addedLicenseKeyGroups, featureGroup); removeLicenseKeyGroupsToFeatureGroupsRef(removedLicenseKeyGroups, featureGroup); @@ -434,59 +434,59 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { removeEntitlementPoolsToFeatureGroupsRef(removedEntitlementPools, featureGroup); featureGroupDao.updateFeatureGroup(featureGroup, addedEntitlementPools, removedEntitlementPools, - addedLicenseKeyGroups, removedLicenseKeyGroups); + addedLicenseKeyGroups, removedLicenseKeyGroups); vendorLicenseFacade - .updateVlmLastModificationTime(featureGroup.getVendorLicenseModelId(), version); + .updateVlmLastModificationTime(featureGroup.getVendorLicenseModelId(), version); mdcDataDebugMessage.debugExitMessage("VLM id, FG id", featureGroup - .getVendorLicenseModelId(), featureGroup.getId()); + .getVendorLicenseModelId(), featureGroup.getId()); } @Override public FeatureGroupModel getFeatureGroupModel(FeatureGroupEntity featureGroup, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, FG id", - featureGroup.getVendorLicenseModelId(), featureGroup.getId()); + featureGroup.getVendorLicenseModelId(), featureGroup.getId()); mdcDataDebugMessage.debugExitMessage("VLM id, FG id", - featureGroup.getVendorLicenseModelId(), featureGroup.getId()); + featureGroup.getVendorLicenseModelId(), featureGroup.getId()); return vendorLicenseFacade.getFeatureGroupModel(featureGroup, user); } @Override public void deleteFeatureGroup(FeatureGroupEntity featureGroup, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, FG id", - featureGroup.getVendorLicenseModelId(), featureGroup.getId()); + featureGroup.getVendorLicenseModelId(), featureGroup.getId()); Version version = VersioningUtil.resolveVersion(featureGroup.getVersion(), - getVersionInfo(featureGroup.getVendorLicenseModelId(), VersionableEntityAction.Write, - user), user); + getVersionInfo(featureGroup.getVendorLicenseModelId(), VersionableEntityAction.Write, + user), user); featureGroup.setVersion(version); FeatureGroupEntity retrieved = featureGroupDao.get(featureGroup); VersioningUtil - .validateEntityExistence(retrieved, featureGroup, VendorLicenseModelEntity.ENTITY_TYPE); + .validateEntityExistence(retrieved, featureGroup, VendorLicenseModelEntity.ENTITY_TYPE); removeLicenseKeyGroupsToFeatureGroupsRef(retrieved.getLicenseKeyGroupIds(), featureGroup); removeEntitlementPoolsToFeatureGroupsRef(retrieved.getEntitlementPoolIds(), featureGroup); for (String licenceAgreementId : retrieved.getReferencingLicenseAgreements()) { licenseAgreementDao.removeFeatureGroup( - new LicenseAgreementEntity(featureGroup.getVendorLicenseModelId(), version, - licenceAgreementId), featureGroup.getId()); + new LicenseAgreementEntity(featureGroup.getVendorLicenseModelId(), version, + licenceAgreementId), featureGroup.getId()); } featureGroupDao.delete(featureGroup); deleteUniqueName(VendorLicenseConstants.UniqueValues.FEATURE_GROUP_NAME, - retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(), - retrieved.getName()); + retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(), + retrieved.getName()); vendorLicenseFacade.updateVlmLastModificationTime(featureGroup.getVendorLicenseModelId(), - featureGroup.getVersion()); + featureGroup.getVersion()); mdcDataDebugMessage - .debugExitMessage("VLM id, FG id", - featureGroup.getVendorLicenseModelId(), featureGroup.getId()); + .debugExitMessage("VLM id, FG id", + featureGroup.getVendorLicenseModelId(), featureGroup.getId()); } @Override @@ -501,61 +501,61 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { public EntitlementPoolEntity createEntitlementPool(EntitlementPoolEntity entitlementPool, String user) { mdcDataDebugMessage - .debugEntryMessage("VLM id", entitlementPool.getVendorLicenseModelId()); + .debugEntryMessage("VLM id", entitlementPool.getVendorLicenseModelId()); mdcDataDebugMessage - .debugExitMessage("VLM id", entitlementPool.getVendorLicenseModelId()); + .debugExitMessage("VLM id", entitlementPool.getVendorLicenseModelId()); entitlementPool.setStartDate(entitlementPool.getStartDate() != null ? (entitlementPool - .getStartDate().trim().length() != 0 ? entitlementPool.getStartDate()+"T00:00:00Z" - : null) : null); + .getStartDate().trim().length() != 0 ? entitlementPool.getStartDate()+"T00:00:00Z" + : null) : null); entitlementPool.setExpiryDate(entitlementPool.getExpiryDate() != null ? (entitlementPool - .getExpiryDate().trim().length() != 0 ? entitlementPool.getExpiryDate()+"T23:59:59Z" - : null) : null); + .getExpiryDate().trim().length() != 0 ? entitlementPool.getExpiryDate()+"T23:59:59Z" + : null) : null); validateCreateDate(entitlementPool.getStartDate(), entitlementPool.getExpiryDate(), - entitlementPool.getVendorLicenseModelId()); + entitlementPool.getVendorLicenseModelId()); return vendorLicenseFacade.createEntitlementPool(entitlementPool, user); } private void validateCreateDate(String startDate, String expiryDate, String vendorLicenseModelId){ mdcDataDebugMessage.debugEntryMessage("Start date and end date", startDate - +" "+expiryDate); + +" "+expiryDate); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy'T'HH:mm:ss'Z'"); if(startDate != null && expiryDate != null) { if (LocalDate.parse(startDate, formatter).atStartOfDay().isBefore - (LocalDate.now().atStartOfDay()) || LocalDate.parse(expiryDate, formatter).atStartOfDay() + (LocalDate.now().atStartOfDay()) || LocalDate.parse(expiryDate, formatter).atStartOfDay() .isEqual(LocalDate.parse(startDate, formatter).atStartOfDay()) || LocalDate - .parse(expiryDate, formatter).isBefore(LocalDate.parse(startDate, formatter))) { + .parse(expiryDate, formatter).isBefore(LocalDate.parse(startDate, formatter))) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); + LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); throw new CoreException( - new InvalidDateErrorBuilder(vendorLicenseModelId) - .build()); + new InvalidDateErrorBuilder(vendorLicenseModelId) + .build()); } } if(startDate != null && expiryDate == null) { if (LocalDate.parse(startDate, formatter).atStartOfDay().isBefore - (LocalDate.now().atStartOfDay())) { + (LocalDate.now().atStartOfDay())) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); + LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); throw new CoreException( - new InvalidDateErrorBuilder(vendorLicenseModelId) - .build()); + new InvalidDateErrorBuilder(vendorLicenseModelId) + .build()); } } if(startDate == null && expiryDate != null) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); + LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); throw new CoreException( - new InvalidDateErrorBuilder(vendorLicenseModelId) - .build()); + new InvalidDateErrorBuilder(vendorLicenseModelId) + .build()); } @@ -564,30 +564,30 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { private void validateUpdateDate(String startDate, String expiryDate, String vendorLicenseModelId){ mdcDataDebugMessage.debugEntryMessage("Start date and end date", startDate - +" "+ expiryDate); + +" "+ expiryDate); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy'T'HH:mm:ss'Z'"); if(startDate != null && expiryDate != null) { if (LocalDate.parse(expiryDate, formatter).atStartOfDay() - .isEqual(LocalDate.parse(startDate, formatter).atStartOfDay()) || - LocalDate.parse(expiryDate, formatter).isBefore(LocalDate.parse(startDate, formatter))) { + .isEqual(LocalDate.parse(startDate, formatter).atStartOfDay()) || + LocalDate.parse(expiryDate, formatter).isBefore(LocalDate.parse(startDate, formatter))) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); + LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); throw new CoreException( - new InvalidDateErrorBuilder(vendorLicenseModelId) - .build()); + new InvalidDateErrorBuilder(vendorLicenseModelId) + .build()); } } if(startDate == null && expiryDate != null) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); + LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); throw new CoreException( - new InvalidDateErrorBuilder(vendorLicenseModelId) - .build()); + new InvalidDateErrorBuilder(vendorLicenseModelId) + .build()); } @@ -597,77 +597,77 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { @Override public void updateEntitlementPool(EntitlementPoolEntity entitlementPool, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, EP id", entitlementPool - .getVendorLicenseModelId(), entitlementPool.getId()); + .getVendorLicenseModelId(), entitlementPool.getId()); entitlementPool.setStartDate(entitlementPool.getStartDate() != null ? (entitlementPool - .getStartDate().trim().length() != 0 ? entitlementPool.getStartDate()+"T00:00:00Z" - : null) : null); + .getStartDate().trim().length() != 0 ? entitlementPool.getStartDate()+"T00:00:00Z" + : null) : null); entitlementPool.setExpiryDate(entitlementPool.getExpiryDate() != null ? (entitlementPool - .getExpiryDate().trim().length() != 0 ? entitlementPool.getExpiryDate()+"T23:59:59Z" - : null) : null); + .getExpiryDate().trim().length() != 0 ? entitlementPool.getExpiryDate()+"T23:59:59Z" + : null) : null); validateUpdateDate(entitlementPool.getStartDate(), entitlementPool.getExpiryDate(), - entitlementPool.getVendorLicenseModelId()); + entitlementPool.getVendorLicenseModelId()); Version version = VersioningUtil.resolveVersion(entitlementPool.getVersion(), - getVersionInfo(entitlementPool.getVendorLicenseModelId(), VersionableEntityAction.Write, - user), user); + getVersionInfo(entitlementPool.getVendorLicenseModelId(), VersionableEntityAction.Write, + user), user); vendorLicenseFacade - .updateVlmLastModificationTime(entitlementPool.getVendorLicenseModelId(), version); + .updateVlmLastModificationTime(entitlementPool.getVendorLicenseModelId(), version); vendorLicenseFacade.updateEntitlementPool(entitlementPool, user); mdcDataDebugMessage.debugExitMessage("VLM id, EP id", entitlementPool - .getVendorLicenseModelId(), entitlementPool.getId()); + .getVendorLicenseModelId(), entitlementPool.getId()); } @Override public EntitlementPoolEntity getEntitlementPool(EntitlementPoolEntity entitlementPool, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, EP id", entitlementPool - .getVendorLicenseModelId(), entitlementPool.getId()); + .getVendorLicenseModelId(), entitlementPool.getId()); entitlementPool.setVersion(VersioningUtil.resolveVersion(entitlementPool.getVersion(), - getVersionInfo(entitlementPool.getVendorLicenseModelId(), VersionableEntityAction.Read, - user), user)); + getVersionInfo(entitlementPool.getVendorLicenseModelId(), VersionableEntityAction.Read, + user), user)); EntitlementPoolEntity retrieved = entitlementPoolDao.get(entitlementPool); VersioningUtil - .validateEntityExistence(retrieved, entitlementPool, VendorLicenseModelEntity.ENTITY_TYPE); + .validateEntityExistence(retrieved, entitlementPool, VendorLicenseModelEntity.ENTITY_TYPE); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy'T'HH:mm:ss'Z'"); DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); if(retrieved.getStartDate() != null){ retrieved.setStartDate(LocalDate.parse(retrieved.getStartDate(),formatter).format - (targetFormatter)); + (targetFormatter)); } if(retrieved.getExpiryDate() != null){ retrieved.setExpiryDate(LocalDate.parse(retrieved.getExpiryDate(),formatter).format - (targetFormatter)); + (targetFormatter)); } mdcDataDebugMessage.debugExitMessage("VLM id, EP id", entitlementPool - .getVendorLicenseModelId(), entitlementPool.getId()); + .getVendorLicenseModelId(), entitlementPool.getId()); return retrieved; } @Override public void deleteEntitlementPool(EntitlementPoolEntity entitlementPool, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, EP id", entitlementPool - .getVendorLicenseModelId(), entitlementPool.getId()); + .getVendorLicenseModelId(), entitlementPool.getId()); Version version = VersioningUtil.resolveVersion(entitlementPool.getVersion(), - getVersionInfo(entitlementPool.getVendorLicenseModelId(), VersionableEntityAction.Write, - user), user); + getVersionInfo(entitlementPool.getVendorLicenseModelId(), VersionableEntityAction.Write, + user), user); entitlementPool.setVersion(version); EntitlementPoolEntity retrieved = entitlementPoolDao.get(entitlementPool); VersioningUtil - .validateEntityExistence(retrieved, entitlementPool, VendorLicenseModelEntity.ENTITY_TYPE); + .validateEntityExistence(retrieved, entitlementPool, VendorLicenseModelEntity.ENTITY_TYPE); for (String referencingFeatureGroupId : retrieved.getReferencingFeatureGroups()) { featureGroupDao.removeEntitlementPool( - new FeatureGroupEntity(entitlementPool.getVendorLicenseModelId(), version, - referencingFeatureGroupId), entitlementPool.getId()); + new FeatureGroupEntity(entitlementPool.getVendorLicenseModelId(), version, + referencingFeatureGroupId), entitlementPool.getId()); } deleteChildLimits(entitlementPool.getVendorLicenseModelId(), entitlementPool.getVersion(), entitlementPool.getId(), user); @@ -675,22 +675,22 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { entitlementPoolDao.delete(entitlementPool); deleteUniqueName(VendorLicenseConstants.UniqueValues.ENTITLEMENT_POOL_NAME, - retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(), - retrieved.getName()); + retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(), + retrieved.getName()); vendorLicenseFacade.updateVlmLastModificationTime(entitlementPool.getVendorLicenseModelId(), - entitlementPool.getVersion()); + entitlementPool.getVersion()); mdcDataDebugMessage.debugExitMessage("VLM id, EP id", entitlementPool - .getVendorLicenseModelId(), entitlementPool.getId()); + .getVendorLicenseModelId(), entitlementPool.getId()); } protected void deleteChildLimits(String vlmId, Version version, String epLkgId, String user) { - Optional<Collection<LimitEntity>> limitEntities = Optional.ofNullable( - listLimits(vlmId, version, epLkgId, user)); - limitEntities.ifPresent(entities-> - entities.forEach(entity-> - deleteLimit(entity, user))); + Optional<Collection<LimitEntity>> limitEntities = Optional.ofNullable( + listLimits(vlmId, version, epLkgId, user)); + limitEntities.ifPresent(entities-> + entities.forEach(entity-> + deleteLimit(entity, user))); } @Override @@ -705,87 +705,87 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { public LicenseKeyGroupEntity createLicenseKeyGroup(LicenseKeyGroupEntity licenseKeyGroup, String user) { mdcDataDebugMessage - .debugEntryMessage("VLM id", licenseKeyGroup.getVendorLicenseModelId()); + .debugEntryMessage("VLM id", licenseKeyGroup.getVendorLicenseModelId()); mdcDataDebugMessage.debugExitMessage("VLM id", licenseKeyGroup - .getVendorLicenseModelId()); + .getVendorLicenseModelId()); licenseKeyGroup.setStartDate(licenseKeyGroup.getStartDate() != null ? (licenseKeyGroup - .getStartDate().trim().length() != 0 ? licenseKeyGroup.getStartDate()+"T00:00:00Z" - : null) : null); + .getStartDate().trim().length() != 0 ? licenseKeyGroup.getStartDate()+"T00:00:00Z" + : null) : null); licenseKeyGroup.setExpiryDate(licenseKeyGroup.getExpiryDate() != null ? (licenseKeyGroup - .getExpiryDate().trim().length() != 0 ? licenseKeyGroup.getExpiryDate()+"T23:59:59Z" - : null) : null); + .getExpiryDate().trim().length() != 0 ? licenseKeyGroup.getExpiryDate()+"T23:59:59Z" + : null) : null); validateCreateDate(licenseKeyGroup.getStartDate(), licenseKeyGroup.getExpiryDate(), - licenseKeyGroup.getVendorLicenseModelId()); + licenseKeyGroup.getVendorLicenseModelId()); return vendorLicenseFacade.createLicenseKeyGroup(licenseKeyGroup, user); } @Override public void updateLicenseKeyGroup(LicenseKeyGroupEntity licenseKeyGroup, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, LKG id", licenseKeyGroup - .getVendorLicenseModelId(), licenseKeyGroup.getId()); + .getVendorLicenseModelId(), licenseKeyGroup.getId()); licenseKeyGroup.setStartDate(licenseKeyGroup.getStartDate() != null ? (licenseKeyGroup - .getStartDate().trim().length() != 0 ? licenseKeyGroup.getStartDate()+"T00:00:00Z" - : null) : null); + .getStartDate().trim().length() != 0 ? licenseKeyGroup.getStartDate()+"T00:00:00Z" + : null) : null); licenseKeyGroup.setExpiryDate(licenseKeyGroup.getExpiryDate() != null ? (licenseKeyGroup - .getExpiryDate().trim().length() != 0 ? licenseKeyGroup.getExpiryDate()+"T23:59:59Z" - : null) : null); + .getExpiryDate().trim().length() != 0 ? licenseKeyGroup.getExpiryDate()+"T23:59:59Z" + : null) : null); validateUpdateDate(licenseKeyGroup.getStartDate(), licenseKeyGroup.getExpiryDate(), - licenseKeyGroup.getVendorLicenseModelId()); + licenseKeyGroup.getVendorLicenseModelId()); Version version = VersioningUtil.resolveVersion(licenseKeyGroup.getVersion(), - getVersionInfo(licenseKeyGroup.getVendorLicenseModelId(), VersionableEntityAction.Write, - user), user); + getVersionInfo(licenseKeyGroup.getVendorLicenseModelId(), VersionableEntityAction.Write, + user), user); vendorLicenseFacade - .updateVlmLastModificationTime(licenseKeyGroup.getVendorLicenseModelId(), version); + .updateVlmLastModificationTime(licenseKeyGroup.getVendorLicenseModelId(), version); vendorLicenseFacade.updateLicenseKeyGroup(licenseKeyGroup, user); mdcDataDebugMessage.debugExitMessage("VLM id, LKG id", licenseKeyGroup - .getVendorLicenseModelId(), licenseKeyGroup.getId()); + .getVendorLicenseModelId(), licenseKeyGroup.getId()); } @Override public LicenseKeyGroupEntity getLicenseKeyGroup(LicenseKeyGroupEntity licenseKeyGroup, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, LKG id", licenseKeyGroup - .getVendorLicenseModelId(), licenseKeyGroup.getId()); + .getVendorLicenseModelId(), licenseKeyGroup.getId()); licenseKeyGroup.setVersion(VersioningUtil.resolveVersion(licenseKeyGroup.getVersion(), - getVersionInfo(licenseKeyGroup.getVendorLicenseModelId(), VersionableEntityAction.Read, - user), user)); + getVersionInfo(licenseKeyGroup.getVendorLicenseModelId(), VersionableEntityAction.Read, + user), user)); LicenseKeyGroupEntity retrieved = licenseKeyGroupDao.get(licenseKeyGroup); VersioningUtil - .validateEntityExistence(retrieved, licenseKeyGroup, VendorLicenseModelEntity.ENTITY_TYPE); + .validateEntityExistence(retrieved, licenseKeyGroup, VendorLicenseModelEntity.ENTITY_TYPE); mdcDataDebugMessage.debugExitMessage("VLM id, LKG id", licenseKeyGroup - .getVendorLicenseModelId(), licenseKeyGroup.getId()); + .getVendorLicenseModelId(), licenseKeyGroup.getId()); return retrieved; } @Override public void deleteLicenseKeyGroup(LicenseKeyGroupEntity licenseKeyGroup, String user) { mdcDataDebugMessage.debugEntryMessage("VLM id, LKG id", licenseKeyGroup - .getVendorLicenseModelId(), licenseKeyGroup.getId()); + .getVendorLicenseModelId(), licenseKeyGroup.getId()); Version version = VersioningUtil.resolveVersion(licenseKeyGroup.getVersion(), - getVersionInfo(licenseKeyGroup.getVendorLicenseModelId(), VersionableEntityAction.Write, - user), user); + getVersionInfo(licenseKeyGroup.getVendorLicenseModelId(), VersionableEntityAction.Write, + user), user); licenseKeyGroup.setVersion(version); LicenseKeyGroupEntity retrieved = licenseKeyGroupDao.get(licenseKeyGroup); VersioningUtil - .validateEntityExistence(retrieved, licenseKeyGroup, VendorLicenseModelEntity.ENTITY_TYPE); + .validateEntityExistence(retrieved, licenseKeyGroup, VendorLicenseModelEntity.ENTITY_TYPE); for (String referencingFeatureGroupId : retrieved.getReferencingFeatureGroups()) { featureGroupDao.removeLicenseKeyGroup( - new FeatureGroupEntity(licenseKeyGroup.getVendorLicenseModelId(), version, - referencingFeatureGroupId), licenseKeyGroup.getId()); + new FeatureGroupEntity(licenseKeyGroup.getVendorLicenseModelId(), version, + referencingFeatureGroupId), licenseKeyGroup.getId()); } deleteChildLimits(licenseKeyGroup.getVendorLicenseModelId(), licenseKeyGroup.getVersion(), licenseKeyGroup.getId(), user); @@ -793,51 +793,53 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { licenseKeyGroupDao.delete(licenseKeyGroup); deleteUniqueName(VendorLicenseConstants.UniqueValues.LICENSE_KEY_GROUP_NAME, - retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(), - retrieved.getName()); + retrieved.getVendorLicenseModelId(), retrieved.getVersion().toString(), + retrieved.getName()); vendorLicenseFacade.updateVlmLastModificationTime(licenseKeyGroup.getVendorLicenseModelId(), - licenseKeyGroup.getVersion()); + licenseKeyGroup.getVersion()); mdcDataDebugMessage.debugExitMessage("VLM id, LKG id", licenseKeyGroup - .getVendorLicenseModelId(), licenseKeyGroup.getId()); + .getVendorLicenseModelId(), licenseKeyGroup.getId()); } @Override public LimitEntity createLimit(LimitEntity limit, String user) { mdcDataDebugMessage - .debugEntryMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit - .getEpLkgId()); + .debugEntryMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit + .getEpLkgId()); mdcDataDebugMessage - .debugExitMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit - .getEpLkgId()); + .debugExitMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit + .getEpLkgId()); validateLimit(limit, user); - return vendorLicenseFacade.createLimit(limit, user); + LimitEntity createdLimit = vendorLicenseFacade.createLimit(limit, user); + updateParentForLimit(limit,user); + return createdLimit; } private void validateLimit(LimitEntity limit, String user) { Version version = VersioningUtil.resolveVersion(limit.getVersion(), - getVersionInfo(limit.getVendorLicenseModelId(), VersionableEntityAction.Write, - user), user); + getVersionInfo(limit.getVendorLicenseModelId(), VersionableEntityAction.Write, + user), user); Collection<LimitEntity> limitList = listLimits(limit.getVendorLicenseModelId(),version - ,limit.getEpLkgId(), user); + ,limit.getEpLkgId(), user); if (!isLimitNameUnique(limitList,limit.getName(), limit.getType(), limit.getId())) { final ErrorCode duplicateLimitNameErrorBuilder = - LimitErrorBuilder.getDuplicateNameErrorbuilder(limit.getName(), limit.getType().name()); + LimitErrorBuilder.getDuplicateNameErrorbuilder(limit.getName(), limit.getType().name()); MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerServiceName.Create_LIMIT.toString(), ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), - duplicateLimitNameErrorBuilder.message()); + LoggerServiceName.Create_LIMIT.toString(), ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), + duplicateLimitNameErrorBuilder.message()); throw new CoreException(duplicateLimitNameErrorBuilder); } } private boolean isLimitNameUnique(Collection<LimitEntity> limitList, String name, LimitType - type, String id) { + type, String id) { for (LimitEntity limit : limitList) { if(limit.getName().equalsIgnoreCase(name) && - limit.getType().name().equalsIgnoreCase(type.name())) { + limit.getType().name().equalsIgnoreCase(type.name())) { if(id != null && limit.getId().equals(id)){ continue; } @@ -865,9 +867,9 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { user), user); limitEntity.setVersion(version); - if(!isLimitPresent(limitEntity)){ + if ( !isLimitPresent(limitEntity)) { VersioningUtil - .validateEntityExistence(null, limitEntity, VendorLicenseModelEntity.ENTITY_TYPE); + .validateEntityExistence(null, limitEntity, VendorLicenseModelEntity.ENTITY_TYPE); } LimitEntity retrieved = limitDao.get(limitEntity); VersioningUtil @@ -878,6 +880,8 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { vendorLicenseFacade.updateVlmLastModificationTime(limitEntity.getVendorLicenseModelId(), limitEntity.getVersion()); + updateParentForLimit(limitEntity,user); + mdcDataDebugMessage.debugExitMessage("VLM id, EP id, Limit Id", limitEntity .getVendorLicenseModelId(), limitEntity.getEpLkgId(), limitEntity.getId()); } @@ -885,14 +889,15 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { @Override public void updateLimit(LimitEntity limit, String user) { mdcDataDebugMessage - .debugEntryMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit - .getEpLkgId()); + .debugEntryMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit + .getEpLkgId()); getLimit(limit,user); validateLimit(limit, user); vendorLicenseFacade.updateLimit(limit, user); + updateParentForLimit(limit,user); mdcDataDebugMessage - .debugExitMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit - .getEpLkgId()); + .debugExitMessage("VLM id", limit.getVendorLicenseModelId(), "EP/LKGId", limit + .getEpLkgId()); } private boolean isLimitPresent(LimitEntity limit) { @@ -901,108 +906,135 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { @Override public LimitEntity getLimit(LimitEntity limitEntity, - String user) { + String user) { mdcDataDebugMessage.debugEntryMessage("VLM id", limitEntity.getVendorLicenseModelId(), - "EP/LKGId", limitEntity.getEpLkgId()); + "EP/LKGId", limitEntity.getEpLkgId()); limitEntity.setVersion(VersioningUtil.resolveVersion(limitEntity.getVersion(), - getVersionInfo(limitEntity.getVendorLicenseModelId(), VersionableEntityAction.Read, - user), user)); + getVersionInfo(limitEntity.getVendorLicenseModelId(), VersionableEntityAction.Read, + user), user)); if(!isLimitPresent(limitEntity)){ VersioningUtil - .validateEntityExistence(null, limitEntity, VendorLicenseModelEntity.ENTITY_TYPE); + .validateEntityExistence(null, limitEntity, VendorLicenseModelEntity.ENTITY_TYPE); } LimitEntity retrieved = limitDao.get(limitEntity); VersioningUtil - .validateEntityExistence(retrieved, limitEntity, VendorLicenseModelEntity.ENTITY_TYPE); + .validateEntityExistence(retrieved, limitEntity, VendorLicenseModelEntity.ENTITY_TYPE); mdcDataDebugMessage.debugExitMessage("VLM id", limitEntity.getVendorLicenseModelId(), - "EP/LKGId", limitEntity.getEpLkgId()); + "EP/LKGId", limitEntity.getEpLkgId()); return retrieved; } + /** + * update Parent of limit (EP/LKG) versionuuid when limit is modified so that limit updates are + * captured in VLM XML + * @param limit + * @param user + */ + private void updateParentForLimit(LimitEntity limit, String user) { + mdcDataDebugMessage.debugEntryMessage("VLM id", limit.getVendorLicenseModelId(), + "EP/LKGId", limit.getEpLkgId(), "Limit Parent ", limit.getParent()); + if ("EntitlementPool".equals(limit.getParent()) ) { + EntitlementPoolEntity entitlementPoolEntity = + entitlementPoolDao.get(new EntitlementPoolEntity(limit.getVendorLicenseModelId(), + limit.getVersion(), limit.getEpLkgId())); + vendorLicenseFacade.updateEntitlementPool(entitlementPoolEntity, user); + } + + if ("LicenseKeyGroup".equals(limit.getParent())) { + LicenseKeyGroupEntity licenseKeyGroupEntity = licenseKeyGroupDao.get( + new LicenseKeyGroupEntity(limit.getVendorLicenseModelId(), limit.getVersion(), + limit.getEpLkgId())); + vendorLicenseFacade.updateLicenseKeyGroup(licenseKeyGroupEntity, user); + } + + mdcDataDebugMessage.debugEntryMessage("VLM id", limit.getVendorLicenseModelId(), + "EP/LKGId", limit.getEpLkgId(), "Limit Parent ", limit.getParent()); + } + protected void addFeatureGroupsToLicenseAgreementRef(Set<String> featureGroupIds, - LicenseAgreementEntity licenseAgreement) { + LicenseAgreementEntity licenseAgreement) { if (featureGroupIds != null) { for (String featureGroupId : featureGroupIds) { featureGroupDao.addReferencingLicenseAgreement( - new FeatureGroupEntity(licenseAgreement.getVendorLicenseModelId(), - licenseAgreement.getVersion(), featureGroupId), licenseAgreement.getId()); + new FeatureGroupEntity(licenseAgreement.getVendorLicenseModelId(), + licenseAgreement.getVersion(), featureGroupId), licenseAgreement.getId()); } } } protected void removeFeatureGroupsToLicenseAgreementRef(Set<String> featureGroupIds, - LicenseAgreementEntity licenseAgreement) { + LicenseAgreementEntity licenseAgreement) { if (featureGroupIds != null) { for (String featureGroupId : featureGroupIds) { featureGroupDao.removeReferencingLicenseAgreement( - new FeatureGroupEntity(licenseAgreement.getVendorLicenseModelId(), - licenseAgreement.getVersion(), featureGroupId), licenseAgreement.getId()); + new FeatureGroupEntity(licenseAgreement.getVendorLicenseModelId(), + licenseAgreement.getVersion(), featureGroupId), licenseAgreement.getId()); } } } protected void addLicenseKeyGroupsToFeatureGroupsRef(Set<String> licenseKeyGroupIds, - FeatureGroupEntity featureGroup) { + FeatureGroupEntity featureGroup) { if (licenseKeyGroupIds != null) { for (String licenseKeyGroupId : licenseKeyGroupIds) { licenseKeyGroupDao.addReferencingFeatureGroup( - new LicenseKeyGroupEntity(featureGroup.getVendorLicenseModelId(), - featureGroup.getVersion(), licenseKeyGroupId), featureGroup.getId()); + new LicenseKeyGroupEntity(featureGroup.getVendorLicenseModelId(), + featureGroup.getVersion(), licenseKeyGroupId), featureGroup.getId()); } } } protected void removeLicenseKeyGroupsToFeatureGroupsRef(Set<String> licenseKeyGroupIds, - FeatureGroupEntity featureGroup) { + FeatureGroupEntity featureGroup) { if (licenseKeyGroupIds != null) { for (String licenseKeyGroupId : licenseKeyGroupIds) { licenseKeyGroupDao.removeReferencingFeatureGroup( - new LicenseKeyGroupEntity(featureGroup.getVendorLicenseModelId(), - featureGroup.getVersion(), licenseKeyGroupId), featureGroup.getId()); + new LicenseKeyGroupEntity(featureGroup.getVendorLicenseModelId(), + featureGroup.getVersion(), licenseKeyGroupId), featureGroup.getId()); } } } protected void addEntitlementPoolsToFeatureGroupsRef(Set<String> entitlementPoolIds, - FeatureGroupEntity featureGroup) { + FeatureGroupEntity featureGroup) { if (entitlementPoolIds != null) { for (String entitlementPoolId : entitlementPoolIds) { entitlementPoolDao.addReferencingFeatureGroup( - new EntitlementPoolEntity(featureGroup.getVendorLicenseModelId(), - featureGroup.getVersion(), entitlementPoolId), featureGroup.getId()); + new EntitlementPoolEntity(featureGroup.getVendorLicenseModelId(), + featureGroup.getVersion(), entitlementPoolId), featureGroup.getId()); } } } protected void removeEntitlementPoolsToFeatureGroupsRef(Set<String> entitlementPoolIds, - FeatureGroupEntity featureGroup) { + FeatureGroupEntity featureGroup) { if (entitlementPoolIds != null) { for (String entitlementPoolId : entitlementPoolIds) { entitlementPoolDao.removeReferencingFeatureGroup( - new EntitlementPoolEntity(featureGroup.getVendorLicenseModelId(), - featureGroup.getVersion(), entitlementPoolId), featureGroup.getId()); + new EntitlementPoolEntity(featureGroup.getVendorLicenseModelId(), + featureGroup.getVersion(), entitlementPoolId), featureGroup.getId()); } } } protected VersionInfo getVersionInfo(String vendorLicenseModelId, VersionableEntityAction action, - String user) { + String user) { return vendorLicenseFacade.getVersionInfo(vendorLicenseModelId, action, user); } protected LicenseAgreementEntity createLicenseAgreementForList(String vlmId, Version version, String user) { return new LicenseAgreementEntity(vlmId, VersioningUtil - .resolveVersion(version, getVersionInfo(vlmId, VersionableEntityAction.Read, user), user), - null); + .resolveVersion(version, getVersionInfo(vlmId, VersionableEntityAction.Read, user), user), + null); } protected void updateUniqueName(String uniqueValueType ,String oldName, String newName,String ... - context) { + context) { UniqueValueUtil - .updateUniqueValue(uniqueValueType, oldName, newName,context); + .updateUniqueValue(uniqueValueType, oldName, newName,context); } protected void deleteUniqueName(String uniqueValueType,String ... uniqueCombination) { @@ -1011,8 +1043,8 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { protected Version resloveVersion(String vlmId,Version requestedVersion, VersionInfo versionInfo, String user){ - return VersioningUtil.resolveVersion(null, - getVersionInfo(vlmId, VersionableEntityAction.Write, user), user); + return VersioningUtil.resolveVersion(null, + getVersionInfo(vlmId, VersionableEntityAction.Write, user), user); } } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/C36B4399FCB942B19D493F839CFA10E2_0_1_General_6E70545C4854465D82DBDB9BCBEF0FB5 b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/C36B4399FCB942B19D493F839CFA10E2_0_1_General_6E70545C4854465D82DBDB9BCBEF0FB5 deleted file mode 100644 index 58e6f9e5e2..0000000000 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/C36B4399FCB942B19D493F839CFA10E2_0_1_General_6E70545C4854465D82DBDB9BCBEF0FB5 +++ /dev/null @@ -1 +0,0 @@ -bla bla
\ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml index ba95d4a3e4..b3fc9aa797 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml @@ -16,6 +16,18 @@ <dependencies> <dependency> <groupId>org.openecomp.sdc.common</groupId> + <artifactId>openecomp-configuration-management-core</artifactId> + <version>${openecomp.sdc.common.version}</version> + <scope>runtime</scope> + <exclusions> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.openecomp.sdc.common</groupId> <artifactId>openecomp-tosca-datatype</artifactId> <version>${openecomp.sdc.common.version}</version> </dependency> @@ -185,6 +197,21 @@ <artifactId>openecomp-sdc-tosca-generator-core</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-sdc-orchesrtation-core</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-tosca-converter-api</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-tosca-converter-core</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> </dependencies> <build> <plugins> diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/OrchestrationTemplateCandidateManager.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/OrchestrationTemplateCandidateManager.java index e648ccef26..e2ef86149b 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/OrchestrationTemplateCandidateManager.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/OrchestrationTemplateCandidateManager.java @@ -20,6 +20,7 @@ package org.openecomp.sdc.vendorsoftwareproduct; +import org.apache.commons.lang3.tuple.Pair; import org.openecomp.sdc.vendorsoftwareproduct.types.OrchestrationTemplateActionResponse; import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse; import org.openecomp.sdc.vendorsoftwareproduct.types.ValidationResponse; @@ -32,7 +33,7 @@ import java.util.Optional; public interface OrchestrationTemplateCandidateManager { UploadFileResponse upload(String vspId, Version version, InputStream heatFileToUpload, - String user); + String user, String filePrefix, String networkPackageName); OrchestrationTemplateActionResponse process(String vspId, Version version, String user); @@ -41,5 +42,5 @@ public interface OrchestrationTemplateCandidateManager { ValidationResponse updateFilesDataStructure(String vspId, Version version, String user, FilesDataStructure fileDataStructure); - Optional<byte[]> get(String vspId, Version version, String user) throws IOException; + Optional<Pair<String, byte[]>> get(String vspId, Version version, String user) throws IOException; } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/DeploymentFlavorErrorBuilder.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/DeploymentFlavorErrorBuilder.java index 97476a2dfd..f0a9f8f31c 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/DeploymentFlavorErrorBuilder.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/DeploymentFlavorErrorBuilder.java @@ -9,24 +9,25 @@ public class DeploymentFlavorErrorBuilder { private static final String CREATE_DEPLOYMENT_FLAVOR_NOT_ALLOWED_IN_HEAT_ONBOARDING_MSG= "Deployment Flavor cannot be added for VSPs onboarded with HEAT."; private static final String FEATURE_GROUP_NOT_EXIST_FOR_VSP_MSG= - "Invalid request,Feature Group with Id %s does not exist for Vsp with Id %s and version " + - "%s."; + "Invalid request,Feature Group with Id %s does not exist for Vsp with Id %s and version " + + "%s."; private static final String INVALID_COMPONENT_COMPUTE_ASSOCIATION_MSG - ="Invalid request,for valid association please provide ComponentId for Compute Flavor"; + ="Invalid request,for valid association please provide ComponentId for Compute Flavor"; private static final String SAME_VFC_ASSOCIATION_MORE_THAN_ONCE_NOT_ALLOWED_MSG= - "Invalid Request,Same Vfc cannot be associated more than once."; + "Invalid Request,Same Vfc cannot be associated more than once."; private static final String DUPLICATE_DEPLOYMENT_FLAVOR_MODEL_NOT_ALLOWED_MSG = - "Invalid request, Deployment Flavor with model %s already exists for Vsp with Id %s."; + "Invalid request, Deployment Flavor with model %s already exists for Vsp with Id %s."; private static final String DEPLOYMENT_FLAVOUR_NAME_FORMAT_MSG = "Field does not conform to predefined criteria" + ": name : must match %s"; private static final String INVALID_COMPUTE_FLAVOR_ID_MSG = - "Invalid request, Compute Flavor with Id %s does not exist for VFC with Id %s."; + "Invalid request, Compute Flavor with Id %s does not exist for VFC with Id %s."; private static final String INVALID_COMPONENT_COMPUTE_ASSOCIATION_ERROR_MSG="VSP cannot be " + - "submitted with an invalid Deployment Flavor. All Deployment Flavor should have atleast a VFC included with it's required Compute needs. Please fix the Deployment Flavor and re-submit the VSP."; + "submitted with an invalid Deployment Flavor. All Deployment Flavor should have atleast a VFC included with it's required Compute needs. " + + "Please fix the Deployment Flavor %s and re-submit the VSP."; private static final String FEATUREGROUP_REQUIRED_IN_DEPLOYMENT_FLAVOR_MSG = "VSP cannot be " + - "submitted with an invalid Deployment Flavor. All Deployment Flavor should have " + - "FeatureGroup. Please fix the Deployment Flavor and re-submit the VSP."; + "submitted with an invalid Deployment Flavor. All Deployment Flavor should have " + + "FeatureGroup. Please fix the Deployment Flavor %s and re-submit the VSP."; public static ErrorCode getAddDeploymentNotSupportedHeatOnboardErrorBuilder(){ ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder(); @@ -37,12 +38,12 @@ public class DeploymentFlavorErrorBuilder { } public static ErrorCode getFeatureGroupNotexistErrorBuilder( String featureGroupId, String - VspId, Version activeVersion){ + VspId, Version activeVersion){ ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder(); builder.withId(VendorSoftwareProductErrorCodes.FEATURE_GROUP_NOT_EXIST_FOR_VSP); builder.withCategory(ErrorCategory.APPLICATION); builder.withMessage(String.format(FEATURE_GROUP_NOT_EXIST_FOR_VSP_MSG,featureGroupId, - VspId,activeVersion.toString())); + VspId,activeVersion.toString())); return builder.build(); } @@ -70,28 +71,28 @@ public class DeploymentFlavorErrorBuilder { return builder.build(); } public static ErrorCode getInvalidComputeIdErrorBuilder( String computeFlavorId, String - vfcId){ + vfcId){ ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder(); builder.withId(VendorSoftwareProductErrorCodes.INVALID_COMPUTE_FLAVOR_ID); builder.withCategory(ErrorCategory.APPLICATION); builder.withMessage(String.format(INVALID_COMPUTE_FLAVOR_ID_MSG,computeFlavorId, - vfcId)); + vfcId)); return builder.build(); } - public static ErrorCode getInvalidComponentComputeAssociationErrorBuilder(){ + public static ErrorCode getInvalidComponentComputeAssociationErrorBuilder(String model){ ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder(); builder.withId(VendorSoftwareProductErrorCodes.INVALID_COMPONENT_COMPUTE_ASSOCIATION); builder.withCategory(ErrorCategory.APPLICATION); - builder.withMessage(String.format(INVALID_COMPONENT_COMPUTE_ASSOCIATION_ERROR_MSG)); + builder.withMessage(String.format(INVALID_COMPONENT_COMPUTE_ASSOCIATION_ERROR_MSG, model)); return builder.build(); } - public static ErrorCode getFeatureGroupMandatoryErrorBuilder(){ + public static ErrorCode getFeatureGroupMandatoryErrorBuilder(String model){ ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder(); builder.withId(VendorSoftwareProductErrorCodes.FEATUREGROUP_REQUIRED_IN_DEPLOYMENT_FLAVOR); builder.withCategory(ErrorCategory.APPLICATION); - builder.withMessage(String.format(FEATUREGROUP_REQUIRED_IN_DEPLOYMENT_FLAVOR_MSG)); + builder.withMessage(String.format(FEATUREGROUP_REQUIRED_IN_DEPLOYMENT_FLAVOR_MSG, model)); return builder.build(); } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImpl.java index b54570f13c..9daec08d49 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImpl.java @@ -12,7 +12,6 @@ import org.openecomp.sdc.logging.types.LoggerConstants; import org.openecomp.sdc.logging.types.LoggerErrorCode; import org.openecomp.sdc.logging.types.LoggerTragetServiceName; import org.openecomp.sdc.vendorsoftwareproduct.ImageManager; -import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants; import org.openecomp.sdc.vendorsoftwareproduct.dao.ImageDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity; @@ -45,9 +44,9 @@ public class ImageManagerImpl implements ImageManager { private CompositionEntityDataManager compositionEntityDataManager; public ImageManagerImpl( - VendorSoftwareProductInfoDao vspInfoDao, - ImageDao imageDao, - CompositionEntityDataManager compositionEntityDataManager + VendorSoftwareProductInfoDao vspInfoDao, + ImageDao imageDao, + CompositionEntityDataManager compositionEntityDataManager ) { @@ -67,18 +66,17 @@ public class ImageManagerImpl implements ImageManager { if (!isManual) { ErrorCode errorCode = NotSupportedHeatOnboardMethodErrorBuilder - .getAddImageNotSupportedHeatOnboardMethodErrorBuilder(); + .getAddImageNotSupportedHeatOnboardMethodErrorBuilder(); MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.CREATE_IMAGE, ErrorLevel.ERROR.name(), - errorCode.id(), errorCode.message()); + LoggerTragetServiceName.CREATE_IMAGE, ErrorLevel.ERROR.name(), + errorCode.id(), errorCode.message()); throw new CoreException(errorCode); } - Collection<ImageEntity> vfcImageList = listImages(imageEntity.getVspId() , - imageEntity.getVersion(), imageEntity.getComponentId()); - validateVfcImage(isManual, imageEntity, vfcImageList, LoggerTragetServiceName.CREATE_IMAGE); + /*Collection<ImageEntity> vfcImageList = listImages(imageEntity.getVspId() , + imageEntity.getVersion(), imageEntity.getComponentId());*/ compositionEntityDataManager.createImage(imageEntity); return imageEntity; } @@ -115,10 +113,10 @@ public class ImageManagerImpl implements ImageManager { @Override public CompositionEntityResponse<Image> getImage(String vspId, Version version, String - componentId, String imageId, String user) { + componentId, String imageId, String user) { mdcDataDebugMessage.debugEntryMessage("VSP id, componentId, image id", vspId, componentId, - imageId); + imageId); /*version = VersioningUtil .resolveVersion(version, getVersionInfo(vspId, VersionableEntityAction.Read, user));*/ @@ -139,14 +137,14 @@ public class ImageManagerImpl implements ImageManager { response.setSchema(getImageCompositionSchema(schemaInput)); mdcDataDebugMessage.debugExitMessage("VSP id, componentId, image id", vspId, componentId, - imageId); + imageId); return response; } @Override public QuestionnaireResponse getImageQuestionnaire(String vspId, Version version, String - componentId, String imageId, String user) { + componentId, String imageId, String user) { mdcDataDebugMessage.debugEntryMessage("VSP id", vspId); /*version = VersioningUtil @@ -168,9 +166,9 @@ public class ImageManagerImpl implements ImageManager { @Override public void deleteImage(String vspId, Version version, String componentId, String imageId, String - user) { + user) { mdcDataDebugMessage - .debugEntryMessage("VSP id, component id", vspId, componentId, imageId); + .debugEntryMessage("VSP id, component id", vspId, componentId, imageId); /*Version activeVersion = getVersionInfo(vspId, VersionableEntityAction.Write, user).getActiveVersion(); @@ -178,19 +176,19 @@ public class ImageManagerImpl implements ImageManager { ImageEntity imageEntity = getImageEntity(vspId, version, componentId, imageId); if (!vspInfoDao.isManual(vspId, version)) { final ErrorCode deleteImageErrorBuilder = - NotSupportedHeatOnboardMethodErrorBuilder - .getDelImageNotSupportedHeatOnboardMethodErrorBuilder(); + NotSupportedHeatOnboardMethodErrorBuilder + .getDelImageNotSupportedHeatOnboardMethodErrorBuilder(); MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.DELETE_IMAGE, ErrorLevel.ERROR.name(), - LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), - deleteImageErrorBuilder.message()); + LoggerTragetServiceName.DELETE_IMAGE, ErrorLevel.ERROR.name(), + LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), + deleteImageErrorBuilder.message()); throw new CoreException(deleteImageErrorBuilder); } if (imageEntity != null) { imageDao.delete(new ImageEntity(vspId, version, componentId, imageId)); } mdcDataDebugMessage - .debugExitMessage("VSP id, component id", vspId, componentId, imageId); + .debugExitMessage("VSP id, component id", vspId, componentId, imageId); } private void validateHeatVspImageUpdate(String name, String value, String retrivedValue) { @@ -198,12 +196,12 @@ public class ImageManagerImpl implements ImageManager { if(value != null && !value.equals(retrivedValue)) { final ErrorCode updateHeatImageErrorBuilder = - ImageErrorBuilder.getImageHeatReadOnlyErrorBuilder(name); + ImageErrorBuilder.getImageHeatReadOnlyErrorBuilder(name); MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.UPDATE_IMAGE, ErrorLevel.ERROR.name(), - LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), - updateHeatImageErrorBuilder.message()); + LoggerTragetServiceName.UPDATE_IMAGE, ErrorLevel.ERROR.name(), + LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), + updateHeatImageErrorBuilder.message()); throw new CoreException(updateHeatImageErrorBuilder); } } @@ -211,33 +209,32 @@ public class ImageManagerImpl implements ImageManager { @Override public CompositionEntityValidationData updateImage(ImageEntity image, String user) { mdcDataDebugMessage - .debugEntryMessage("VSP id, component id", image.getVspId(), image.getComponentId(), - image.getId()); + .debugEntryMessage("VSP id, component id", image.getVspId(), image.getComponentId(), + image.getId()); /*Version activeVersion = getVersionInfo(image.getVspId(), VersionableEntityAction.Write, user).getActiveVersion(); image.setVersion(activeVersion);*/ boolean isManual = vspInfoDao.isManual(image.getVspId(), image.getVersion()); ImageEntity retrieved = getImageEntity(image.getVspId(), image.getVersion(), image.getComponentId(), - image.getId()); + image.getId()); if(!isManual) { final Image imageCompositionData = image.getImageCompositionData(); final String fileName = imageCompositionData.getFileName(); //final String format = imageCompositionData.getFormat(); validateHeatVspImageUpdate("fileName", fileName, retrieved.getImageCompositionData() - .getFileName()); + .getFileName()); /*validateHeatVspImageUpdate("format", format, retrieved.getImageCompositionData() .getFormat());*/ } Collection<ImageEntity> vfcImageList = listImages(image.getVspId() , - image.getVersion(), image.getComponentId()); + image.getVersion(), image.getComponentId()); //Set to null so that retrieved object is equal to one in list and gets removed. retrieved.setQuestionnaireData(null); vfcImageList.remove(retrieved); - validateVfcImage(isManual, image, vfcImageList, LoggerTragetServiceName.UPDATE_IMAGE); //Set format to default value in order to handle FTL validation when image format is null /*if(image.getImageCompositionData().getFormat() == null) @@ -247,23 +244,23 @@ public class ImageManagerImpl implements ImageManager { schemaInput.setImage(image.getImageCompositionData()); CompositionEntityValidationData validationData = compositionEntityDataManager - .validateEntity(image, SchemaTemplateContext.composition, schemaInput); + .validateEntity(image, SchemaTemplateContext.composition, schemaInput); if (CollectionUtils.isEmpty(validationData.getErrors())) { imageDao.update(image); } mdcDataDebugMessage - .debugExitMessage("VSP id, component id", image.getVspId(), image.getComponentId(), - image.getId()); + .debugExitMessage("VSP id, component id", image.getVspId(), image.getComponentId(), + image.getId()); return validationData; } @Override public void updateImageQuestionnaire(String vspId, Version version, String componentId, String - imageId, String questionnaireData, String user) { + imageId, String questionnaireData, String user) { mdcDataDebugMessage.debugEntryMessage("VSP id, component id, imageId", vspId, componentId, - imageId); + imageId); getImageEntity(vspId, version, componentId, imageId); @@ -281,15 +278,15 @@ public class ImageManagerImpl implements ImageManager { } catch (IllegalArgumentException exception) { ErrorCode errorCode = ImageErrorBuilder.getInvalidImageFormatErrorBuilder(); MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.UPDATE_IMAGE, ErrorLevel.ERROR.name(), - errorCode.id(), errorCode.message() ); + LoggerTragetServiceName.UPDATE_IMAGE, ErrorLevel.ERROR.name(), + errorCode.id(), errorCode.message() ); throw new CoreException(errorCode); } //Validate Format is read only for HEAT Onboarding if (!vspInfoDao.isManual(vspId, version)) { final QuestionnaireResponse imageQuestionnaire = getImageQuestionnaire(vspId, version, - componentId, imageId, user); + componentId, imageId, user); final String data = imageQuestionnaire.getData(); if (data != null) { String retrivedFormat = JsonUtil.json2Object(data, ImageDetails.class).getFormat(); @@ -299,19 +296,19 @@ public class ImageManagerImpl implements ImageManager { if(!isImageVersionUnique(vspId, version, componentId, imageId, image, user)) { - ErrorCode errorCode = ImageErrorBuilder.getDuplicateImageVersionErrorBuilder(image - .getVersion(), componentId); + ErrorCode errorCode = ImageErrorBuilder.getDuplicateImageVersionErrorBuilder(image + .getVersion(), componentId); - MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.UPDATE_IMAGE, ErrorLevel.ERROR.name(), - errorCode.id(),errorCode.message()); + MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, + LoggerTragetServiceName.UPDATE_IMAGE, ErrorLevel.ERROR.name(), + errorCode.id(),errorCode.message()); - throw new CoreException(errorCode); + throw new CoreException(errorCode); } imageDao.updateQuestionnaireData(vspId, version, componentId, imageId, questionnaireData); mdcDataDebugMessage.debugExitMessage("VSP id, component id, imageId", vspId, componentId, - imageId); + imageId); } private boolean isImageVersionUnique(String vspId, Version version, String componentId, String imageId, @@ -320,15 +317,15 @@ public class ImageManagerImpl implements ImageManager { boolean isPresent = true; if(image!=null && image.getVersion()!=null) { - Collection<ImageEntity> imageEntities = imageDao.list(new ImageEntity(vspId, version, componentId, null)); - if(CollectionUtils.isNotEmpty(imageEntities)) - { - imageEntities = imageEntities.stream().filter(imageEntity -> image.getVersion().trim().equalsIgnoreCase( - getImageVersion(vspId, version, componentId, imageEntity, user)) - && !imageEntity.getId().equals(imageId)).collect(Collectors.toList()); - - isPresent = CollectionUtils.isEmpty(imageEntities); - } + Collection<ImageEntity> imageEntities = imageDao.list(new ImageEntity(vspId, version, componentId, null)); + if(CollectionUtils.isNotEmpty(imageEntities)) + { + imageEntities = imageEntities.stream().filter(imageEntity -> image.getVersion().trim().equalsIgnoreCase( + getImageVersion(vspId, version, componentId, imageEntity, user)) + && !imageEntity.getId().equals(imageId)).collect(Collectors.toList()); + + isPresent = CollectionUtils.isEmpty(imageEntities); + } } return isPresent; @@ -336,11 +333,11 @@ public class ImageManagerImpl implements ImageManager { private String getImageVersion(String vspId, Version version, String componentId, ImageEntity imageEntity, String user) { - QuestionnaireResponse imageQuestionnaire = getImageQuestionnaire(vspId, version, - componentId, imageEntity.getId(), user); - ImageDetails imageDetails = JsonUtil.json2Object(imageQuestionnaire.getData(), ImageDetails.class); + QuestionnaireResponse imageQuestionnaire = getImageQuestionnaire(vspId, version, + componentId, imageEntity.getId(), user); + ImageDetails imageDetails = JsonUtil.json2Object(imageQuestionnaire.getData(), ImageDetails.class); - return imageDetails==null?null:imageDetails.getVersion()!=null?imageDetails.getVersion().trim():null; + return imageDetails==null?null:imageDetails.getVersion()!=null?imageDetails.getVersion().trim():null; } private ImageEntity getImageEntity(String vspId, Version version, String componentId, String imageId) { @@ -349,7 +346,7 @@ public class ImageManagerImpl implements ImageManager { ImageEntity imageEntity = imageDao.get(new ImageEntity(vspId, version, componentId, imageId)); VersioningUtil.validateEntityExistence(imageEntity, new ImageEntity(vspId, version, componentId, - imageId), VspDetails.ENTITY_TYPE); + imageId), VspDetails.ENTITY_TYPE); return imageEntity; } @@ -363,26 +360,12 @@ public class ImageManagerImpl implements ImageManager { return false; } - private void validateVfcImage(boolean isManual, ImageEntity image, - Collection<ImageEntity> vfcImageList, String event) { - if (isImageNameDuplicate(vfcImageList,image.getImageCompositionData().getFileName())) { - ErrorCode errorCode = ImageErrorBuilder.getDuplicateImageNameErrorBuilder(image - .getImageCompositionData().getFileName(), image.getComponentId()); - - MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - event, ErrorLevel.ERROR.name(), - errorCode.id(),errorCode.message()); - - throw new CoreException(errorCode); - } - } - protected String getImageCompositionSchema(SchemaTemplateInput schemaInput) { mdcDataDebugMessage.debugEntryMessage(null, null); mdcDataDebugMessage.debugExitMessage(null, null); return SchemaGenerator - .generate(SchemaTemplateContext.composition, CompositionEntityType.image, - schemaInput); + .generate(SchemaTemplateContext.composition, CompositionEntityType.image, + schemaInput); } protected String getImageQuestionnaireSchema(SchemaTemplateInput schemaInput) { @@ -390,7 +373,7 @@ public class ImageManagerImpl implements ImageManager { mdcDataDebugMessage.debugExitMessage(null, null); return SchemaGenerator - .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.image, - schemaInput); + .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.image, + schemaInput); } } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/MonitoringUploadsManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/MonitoringUploadsManagerImpl.java index 73558b465a..fcf54eef2f 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/MonitoringUploadsManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/MonitoringUploadsManagerImpl.java @@ -25,6 +25,7 @@ import org.openecomp.core.enrichment.types.MonitoringUploadType; import org.openecomp.core.utilities.CommonMethods; import org.openecomp.core.utilities.file.FileContentHandler; import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; import org.openecomp.sdc.activityLog.ActivityLogManager; import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity; import org.openecomp.sdc.common.errors.CoreException; @@ -44,6 +45,7 @@ import org.openecomp.sdc.logging.types.LoggerTragetServiceName; import org.openecomp.sdc.vendorsoftwareproduct.MonitoringUploadsManager; import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants; import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentArtifactDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; import org.openecomp.sdc.vendorsoftwareproduct.errors.MonitoringUploadErrorBuilder; @@ -67,6 +69,7 @@ public class MonitoringUploadsManagerImpl implements MonitoringUploadsManager { private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); private ActivityLogManager activityLogManager; private ComponentArtifactDao componentArtifactDao; + private VendorSoftwareProductDao vendorSoftwareProductDao; private static final Logger logger = LoggerFactory.getLogger(VendorSoftwareProductManagerImpl.class); @@ -253,7 +256,7 @@ public class MonitoringUploadsManagerImpl implements MonitoringUploadsManager { Map<String, List<ErrorMessage>> errors) { FileContentHandler contentMap; try { - contentMap = CommonUtil.validateAndUploadFileContent(uploadedFileData); + contentMap = CommonUtil.validateAndUploadFileContent(OnboardingTypesEnum.ZIP, uploadedFileData); VendorSoftwareProductUtils.validateContentZipData(contentMap, errors); } catch (IOException exception) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImpl.java index 07e84803aa..3f6ffcc622 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImpl.java @@ -21,29 +21,20 @@ package org.openecomp.sdc.vendorsoftwareproduct.impl; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; import org.openecomp.core.model.dao.ServiceModelDao; import org.openecomp.core.model.types.ServiceElement; -import org.openecomp.core.translator.datatypes.TranslatorOutput; -import org.openecomp.core.util.UniqueValueUtil; -import org.openecomp.core.utilities.file.FileContentHandler; -import org.openecomp.core.utilities.file.FileUtils; import org.openecomp.core.utilities.json.JsonUtil; -import org.openecomp.core.validation.util.MessageContainerUtil; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; import org.openecomp.sdc.activityLog.ActivityLogManager; -import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity; import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.common.errors.Messages; -import org.openecomp.sdc.common.utils.CommonUtil; import org.openecomp.sdc.common.utils.SdcCommon; import org.openecomp.sdc.datatypes.error.ErrorLevel; import org.openecomp.sdc.datatypes.error.ErrorMessage; import org.openecomp.sdc.healing.api.HealingManager; import org.openecomp.sdc.healing.types.HealCode; -import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree; -import org.openecomp.sdc.heat.datatypes.structure.ValidationStructureList; -import org.openecomp.sdc.heat.services.tree.HeatTreeManager; -import org.openecomp.sdc.heat.services.tree.HeatTreeManagerUtil; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdc.logging.api.annotations.Metrics; @@ -52,8 +43,6 @@ import org.openecomp.sdc.logging.messages.AuditMessages; import org.openecomp.sdc.logging.types.LoggerServiceName; import org.openecomp.sdc.logging.types.LoggerTragetServiceName; import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; -import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil; -import org.openecomp.sdc.validation.util.ValidationManagerUtil; import org.openecomp.sdc.vendorsoftwareproduct.OrchestrationTemplateCandidateManager; import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentArtifactDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao; @@ -62,40 +51,29 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.ProcessDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.UploadData; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; import org.openecomp.sdc.vendorsoftwareproduct.errors.OrchestrationTemplateNotFoundErrorBuilder; +import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationTemplateFileHandler; +import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationUploadFactory; +import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process.OrchestrationProcessFactory; +import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process.OrchestrationTemplateProcessHandler; import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionDataExtractor; import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager; import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService; -import org.openecomp.sdc.vendorsoftwareproduct.services.utils.CandidateEntityBuilder; import org.openecomp.sdc.vendorsoftwareproduct.types.OrchestrationTemplateActionResponse; import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse; import org.openecomp.sdc.vendorsoftwareproduct.types.ValidationResponse; import org.openecomp.sdc.vendorsoftwareproduct.types.candidateheat.FilesDataStructure; -import org.openecomp.sdc.vendorsoftwareproduct.utils.VendorSoftwareProductUtils; import org.openecomp.sdc.versioning.dao.types.Version; -import org.openecomp.sdcrests.activitylog.types.ActivityType; -import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; -import java.nio.ByteBuffer; -import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; -import static org.openecomp.sdc.logging.messages.AuditMessages.HEAT_VALIDATION_ERROR; -import static org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.GENERAL_COMPONENT_ID; -import static org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.UniqueValues.PROCESS_NAME; - public class OrchestrationTemplateCandidateManagerImpl implements OrchestrationTemplateCandidateManager { private static final Logger logger = @@ -162,65 +140,31 @@ public class OrchestrationTemplateCandidateManagerImpl @Override @Metrics - public UploadFileResponse upload(String vspId, Version version, InputStream heatFileToUpload, - String user) { + public UploadFileResponse upload(String vspId, Version version, InputStream fileToUpload, + String user, String filePrefix, + String networkPackageName) { mdcDataDebugMessage.debugEntryMessage("VSP id", vspId); - + OrchestrationTemplateFileHandler orchestrationTemplateFileHandler = + OrchestrationUploadFactory.createOrchestrationTemplateFileHandler(filePrefix); VspDetails vspDetails = getVspDetails(vspId, version); + UploadFileResponse uploadResponse = orchestrationTemplateFileHandler + .upload(vspId, version, fileToUpload, user, candidateService, + vspDetails); + vspDetails.setOnboardingOrigin(filePrefix); + vspDetails.setNetworkPackageName(networkPackageName); + vspInfoDao.update(vspDetails); + + uploadResponse.setNetworkPackageName(networkPackageName); + return uploadResponse; + } - UploadFileResponse uploadFileResponse = new UploadFileResponse(); - if (isNotEmptyFileToUpload(heatFileToUpload, uploadFileResponse)) { - return uploadFileResponse; - } - - byte[] uploadedFileData = FileUtils.toByteArray(heatFileToUpload); - if (isInvalidRawZipData(uploadFileResponse, uploadedFileData)) { - return uploadFileResponse; - } - - Optional<FileContentHandler> optionalContentMap = - getZipContentMap(uploadFileResponse, uploadedFileData); - if (!optionalContentMap.isPresent()) { - logger.error(Messages.ZIP_CONTENT_MAP.getErrorMessage()); - uploadFileResponse - .addStructureError( - SdcCommon.UPLOAD_FILE, - new ErrorMessage(ErrorLevel.ERROR, Messages.ZIP_CONTENT_MAP.getErrorMessage())); - - mdcDataDebugMessage.debugExitMessage("VSP id", vspId); - return uploadFileResponse; - } - - if (!MapUtils.isEmpty(uploadFileResponse.getErrors())) { - - mdcDataDebugMessage.debugExitMessage("VSP id", vspId); - return uploadFileResponse; - } - try { - OrchestrationTemplateCandidateData candidateData = - new CandidateEntityBuilder(candidateService) - .buildCandidateEntityFromZip(vspDetails, uploadedFileData, optionalContentMap.get(), - uploadFileResponse.getErrors(), user); - candidateService.updateCandidateUploadData(candidateData, vspDetails.getId()); - } catch (Exception exception) { - logger.error(Messages.ZIP_CONTENT_MAP.getErrorMessage()); - uploadFileResponse - .addStructureError( - SdcCommon.UPLOAD_FILE, - new ErrorMessage(ErrorLevel.ERROR, exception.getMessage())); - - mdcDataDebugMessage.debugExitMessage("VSP id", vspId); - return uploadFileResponse; - } - mdcDataDebugMessage.debugExitMessage("VSP id", vspId); - return uploadFileResponse; - } @Override public OrchestrationTemplateActionResponse process(String vspId, Version version, String user) { mdcDataDebugMessage.debugEntryMessage("VSP id", vspId); + OrchestrationTemplateActionResponse response = new OrchestrationTemplateActionResponse(); Optional<OrchestrationTemplateCandidateData> candidate = fetchCandidateDataEntity(vspId, version); @@ -228,97 +172,15 @@ public class OrchestrationTemplateCandidateManagerImpl throw new CoreException(new OrchestrationTemplateNotFoundErrorBuilder(vspId).build()); } - logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_VALIDATION_STARTED + vspId); - OrchestrationTemplateActionResponse response = new OrchestrationTemplateActionResponse(); - UploadFileResponse uploadFileResponse = new UploadFileResponse(); - OrchestrationTemplateCandidateData candidateDataEntity = candidate.get(); - Optional<FileContentHandler> fileContent = - getZipContentMap(uploadFileResponse, candidateDataEntity.getContentData().array()); - if (!fileContent.isPresent()) { - response.addStructureErrors(uploadFileResponse.getErrors()); - mdcDataDebugMessage.debugExitMessage("VSP id", vspId); - response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId, - HEAT_VALIDATION_ERROR)); - return response; - } - - Map<String, List<ErrorMessage>> uploadErrors = uploadFileResponse.getErrors(); - FileContentHandler fileContentMap = fileContent.get(); - FilesDataStructure structure = - JsonUtil.json2Object(candidateDataEntity.getFilesDataStructure(), FilesDataStructure.class); - - if (CollectionUtils.isNotEmpty(structure.getUnassigned())) { - response.addErrorMessageToMap(SdcCommon.UPLOAD_FILE, - Messages.FOUND_UNASSIGNED_FILES.getErrorMessage(), ErrorLevel.ERROR); - - mdcDataDebugMessage.debugExitMessage("VSP id", vspId); - response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId, - HEAT_VALIDATION_ERROR)); - return response; - } - VspDetails vspDetails = getVspDetails(vspId, version); + Optional<OrchestrationTemplateProcessHandler> processInstance = + OrchestrationProcessFactory.getInstance(vspDetails.getOnboardingOrigin()); - String manifest = candidateService.createManifest(vspDetails, structure); - fileContentMap.addFile(SdcCommon.MANIFEST_NAME, manifest.getBytes()); - - Optional<ByteArrayInputStream> zipByteArrayInputStream = candidateService - .fetchZipFileByteArrayInputStream(vspId, candidateDataEntity, manifest, uploadErrors); - if (!zipByteArrayInputStream.isPresent()) { - response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId, - HEAT_VALIDATION_ERROR)); - return response; - } - - HeatStructureTree tree = createAndValidateHeatTree(response, fileContentMap); - - Map<String, String> componentsQuestionnaire = new HashMap<>(); - Map<String, Map<String, String>> componentNicsQuestionnaire = new HashMap<>(); - Map<String, Collection<ComponentMonitoringUploadEntity>> componentMibList = new HashMap<>(); - Map<String, Collection<ProcessEntity>> processes = new HashMap<>(); - Map<String, ProcessEntity> processArtifact = new HashMap<>(); - - backupComponentsQuestionnaireBeforeDelete(vspId, version, componentsQuestionnaire, - componentNicsQuestionnaire, componentMibList, processes, processArtifact); - - deleteUploadDataAndContent(vspId, version); - saveHotData(vspId, version, zipByteArrayInputStream.get(), fileContentMap, tree); - - response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId, - HEAT_VALIDATION_ERROR)); - if ( MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, response.getErrors - ()))) { - logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_VALIDATION_COMPLETED + vspId); + if(processInstance.isPresent()){ + response = processInstance.get().process(vspDetails, candidate.get(), user); } - logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_TRANSLATION_STARTED + vspId); - - TranslatorOutput translatorOutput = - HeatToToscaUtil.loadAndTranslateTemplateData(fileContentMap); - - ToscaServiceModel toscaServiceModel = translatorOutput.getToscaServiceModel(); - if (toscaServiceModel != null) { - serviceModelDao.storeServiceModel(vspId, version, toscaServiceModel); - //Extracting the compostion data from the output service model of the first phase of - // translation - compositionEntityDataManager.saveCompositionData(vspId, version, - compositionDataExtractor.extractServiceCompositionData(translatorOutput - .getNonUnifiedToscaServiceModel())); - retainComponentQuestionnaireData(vspId, version, componentsQuestionnaire, - componentNicsQuestionnaire, componentMibList, processes, processArtifact); - - logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_TRANSLATION_COMPLETED + vspId); - } - - uploadFileResponse.addStructureErrors(uploadErrors); - - ActivityLogEntity activityLogEntity = - new ActivityLogEntity(vspId, String.valueOf(version.getMajor() + 1), - ActivityType.UPLOAD_HEAT.toString(), user, true, "", ""); - activityLogManager.addActionLog(activityLogEntity, user); - - mdcDataDebugMessage.debugExitMessage("VSP id", vspId); return response; } @@ -374,7 +236,7 @@ public class OrchestrationTemplateCandidateManagerImpl @Override - public Optional<byte[]> get(String vspId, Version version, String user) + public Optional<Pair<String, byte[]>> get(String vspId, Version version, String user) throws IOException { mdcDataDebugMessage.debugEntryMessage("VSP id", vspId); @@ -393,15 +255,25 @@ public class OrchestrationTemplateCandidateManagerImpl .debugExitMessage("VSP id", vspId); return Optional.empty(); } + OnboardingTypesEnum type = + OnboardingTypesEnum.getOnboardingTypesEnum(vspDetails.getOnboardingOrigin()); - FilesDataStructure structure = JsonUtil - .json2Object(candidateDataEntity.get().getFilesDataStructure(), FilesDataStructure.class); - String manifest = candidateService.createManifest(vspDetails, structure); + if(vspDetails.getOnboardingOrigin().equals(OnboardingTypesEnum.ZIP.toString())) { + FilesDataStructure structure = JsonUtil + .json2Object(candidateDataEntity.get().getFilesDataStructure(), FilesDataStructure.class); + String manifest = candidateService.createManifest(vspDetails, structure); - mdcDataDebugMessage - .debugExitMessage("VSP id", vspId); - return Optional.ofNullable(candidateService - .replaceManifestInZip(candidateDataEntity.get().getContentData(), manifest, vspId)); + mdcDataDebugMessage + .debugExitMessage("VSP id", vspId); + return Optional.ofNullable( + new ImmutablePair<>(OnboardingTypesEnum.ZIP.toString(),candidateService + .replaceManifestInZip(candidateDataEntity.get().getContentData(), + manifest, vspId, type))); + } + + return Optional.ofNullable( + new ImmutablePair<>(vspDetails.getOnboardingOrigin(),candidateDataEntity.get() + .getContentData().array())); } private Optional<OrchestrationTemplateCandidateData> fetchCandidateDataEntity( @@ -410,213 +282,6 @@ public class OrchestrationTemplateCandidateManagerImpl .ofNullable(candidateService.getOrchestrationTemplateCandidate(vspId, version)); } - private void retainComponentQuestionnaireData(String vspId, Version activeVersion, - Map<String, String> componentsQustanniare, - Map<String, Map<String, String>> - componentNicsQustanniare, - Map<String, Collection<ComponentMonitoringUploadEntity>> componentMibList, - Map<String, Collection<ProcessEntity>> processes, - Map<String, ProcessEntity> processArtifact) { - //VSP processes - restoreProcess(vspId, activeVersion, GENERAL_COMPONENT_ID, GENERAL_COMPONENT_ID, processes, - processArtifact); - Collection<ComponentEntity> - components = vendorSoftwareProductDao.listComponents(vspId, activeVersion); - components.forEach(componentEntity -> { - String componentName = componentEntity.getComponentCompositionData().getName(); - if (componentsQustanniare.containsKey(componentName)) { - componentDao.updateQuestionnaireData(vspId, activeVersion, - componentEntity.getId(), - componentsQustanniare.get(componentEntity.getComponentCompositionData() - .getName())); - if (componentNicsQustanniare.containsKey(componentName)) { - Map<String, String> nicsQustanniare = componentNicsQustanniare.get(componentName); - Collection<NicEntity> - nics = - nicDao.list(new NicEntity(vspId, activeVersion, componentEntity.getId(), null)); - nics.forEach(nicEntity -> { - if (nicsQustanniare.containsKey(nicEntity.getNicCompositionData().getName())) { - nicDao.updateQuestionnaireData(vspId, activeVersion, - componentEntity.getId(), nicEntity.getId(), - nicsQustanniare.get(nicEntity.getNicCompositionData().getName())); - } - }); - } - //MIB //todo add for VES_EVENTS - if (componentMibList.containsKey(componentName)) { - Collection<ComponentMonitoringUploadEntity> mibList = - componentMibList.get(componentName); - mibList.forEach(mib -> { - mib.setComponentId(componentEntity.getId()); - componentArtifactDao.create(mib); - }); - } - //VFC processes - restoreProcess(vspId, activeVersion, componentEntity.getId(), componentName, processes, - processArtifact); - } - }); - } - - private void backupComponentsQuestionnaireBeforeDelete(String vspId, Version activeVersion, - Map<String, String> componentsQustanniare, - Map<String, Map<String, String>> - componentNicsQustanniare, - Map<String, Collection<ComponentMonitoringUploadEntity>> - componentMibList, - Map<String, Collection<ProcessEntity>> - componentProcesses, - Map<String, ProcessEntity> processArtifact) { - //backup VSP processes - backupProcess(vspId, activeVersion, GENERAL_COMPONENT_ID, GENERAL_COMPONENT_ID, - componentProcesses, processArtifact); - Collection<ComponentEntity> componentsCompositionAndQuestionnaire = vendorSoftwareProductDao - .listComponentsCompositionAndQuestionnaire(vspId, - activeVersion); - componentsCompositionAndQuestionnaire.forEach(componentEntity -> { - String componentName = componentEntity.getComponentCompositionData().getName(); - componentsQustanniare.put(componentName, componentEntity - .getQuestionnaireData()); - Collection<NicEntity> - nics = nicDao.list(new NicEntity(vspId, activeVersion, componentEntity.getId(), null)); - //backup mib - Collection<ComponentMonitoringUploadEntity> componentMib = - componentArtifactDao.listArtifacts(new - ComponentMonitoringUploadEntity(vspId, activeVersion, componentEntity.getId(), - null)); - if (CollectionUtils.isNotEmpty(componentMib)) { - componentMibList.put(componentName,componentMib); - } - - //backup component processes - backupProcess(vspId, activeVersion, componentEntity.getId(), componentName, - componentProcesses, processArtifact); - if (CollectionUtils.isNotEmpty(nics)) { - Map<String, String> nicsQustanniare = new HashMap<>(); - nics.forEach(nicEntity -> { - NicEntity nic = nicDao.get(new NicEntity(vspId, activeVersion, componentEntity.getId(), - nicEntity.getId())); - NicEntity nicQuestionnaire = nicDao.getQuestionnaireData(vspId, activeVersion, - componentEntity.getId(), nicEntity.getId()); - - nicsQustanniare - .put(nicEntity.getNicCompositionData().getName(), - nicQuestionnaire.getQuestionnaireData()); - }); - componentNicsQustanniare.put(componentName, nicsQustanniare); - } - }); - } - - private void backupProcess(String vspId, Version activeVersion, String componentId, - String componentName, Map<String, - Collection<ProcessEntity>> processes, - Map<String, ProcessEntity> processArtifact) { - Collection<ProcessEntity> processList = vendorSoftwareProductDao.listProcesses(vspId, - activeVersion, componentId); - if (!processList.isEmpty()) { - processes.put(componentName, processList); - processList.forEach(process -> { - //ProcessArtifactEntity artifact = vendorSoftwareProductDao.getProcessArtifact(vspId, - // activeVersion, componentId, process.getId()); - ProcessEntity artifact = - processDao.get(new ProcessEntity(vspId, activeVersion, componentId, process.getId())); - if (artifact.getArtifact() != null) { - processArtifact.put(process.getId(), artifact); - } - }); - } - } - - private void restoreProcess(String vspId, Version activeVersion, String componentId, - String componentName, - Map<String, Collection<ProcessEntity>> processes, - Map<String, ProcessEntity> processArtifact) { - if (processes.containsKey(componentName)) { - Collection<ProcessEntity> processList = processes.get(componentName); - processList.forEach(process -> { - //Reatin VFC process - if (!GENERAL_COMPONENT_ID.equals(componentId) && processArtifact.containsKey(process.getId - ())) { - ProcessEntity artifact = processArtifact.get(process.getId()); - artifact.setComponentId(componentId); - UniqueValueUtil.createUniqueValue(PROCESS_NAME, vspId, activeVersion.toString(), - componentId, process.getName()); - vendorSoftwareProductDao.createProcess(artifact); - } - }); - } - } - - private HeatStructureTree createAndValidateHeatTree(OrchestrationTemplateActionResponse response, - FileContentHandler fileContentMap) { - VendorSoftwareProductUtils.addFileNamesToUploadFileResponse(fileContentMap, response); - Map<String, List<ErrorMessage>> validationErrors = - ValidationManagerUtil.initValidationManager(fileContentMap).validate(); - response.getErrors().putAll(validationErrors); - - HeatTreeManager heatTreeManager = HeatTreeManagerUtil.initHeatTreeManager(fileContentMap); - heatTreeManager.createTree(); - heatTreeManager.addErrors(validationErrors); - return heatTreeManager.getTree(); - } - - private void saveHotData(String vspId, Version activeVersion, InputStream uploadedFileData, - FileContentHandler fileContentMap, HeatStructureTree tree) { - Map<String, Object> manifestAsMap = - (Map<String, Object>) JsonUtil.json2Object(fileContentMap.getFileContent( - SdcCommon.MANIFEST_NAME), Map.class); - - UploadData uploadData = new UploadData(); - uploadData.setPackageName((String) manifestAsMap.get("name")); - uploadData.setPackageVersion((String) manifestAsMap.get("version")); - uploadData.setContentData(ByteBuffer.wrap(FileUtils.toByteArray(uploadedFileData))); - uploadData.setValidationDataStructure(new ValidationStructureList(tree)); - orchestrationTemplateDataDao.updateOrchestrationTemplateData(vspId, uploadData); - } - - private void deleteUploadDataAndContent(String vspId, Version version) { - //fixme change this when more tables are zusammenized - vendorSoftwareProductDao.deleteUploadData(vspId, version); - } - - private boolean isInvalidRawZipData(UploadFileResponse uploadFileResponse, - byte[] uploadedFileData) { - Optional<ErrorMessage> errorMessage; - errorMessage = candidateService.validateRawZipData(uploadedFileData); - if (errorMessage.isPresent()) { - uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get()); - return true; - } - return false; - } - - private boolean isNotEmptyFileToUpload(InputStream heatFileToUpload, - UploadFileResponse uploadFileResponse) { - Optional<ErrorMessage> errorMessage = - candidateService.validateNonEmptyFileToUpload(heatFileToUpload); - if (errorMessage.isPresent()) { - uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get()); - return true; - } - return false; - } - - private Optional<FileContentHandler> getZipContentMap(UploadFileResponse uploadFileResponse, - byte[] uploadedFileData) { - FileContentHandler contentMap = null; - try { - contentMap = CommonUtil.validateAndUploadFileContent(uploadedFileData); - } catch (IOException exception) { - uploadFileResponse.addStructureError( - SdcCommon.UPLOAD_FILE, - new ErrorMessage(ErrorLevel.ERROR, Messages.INVALID_ZIP_FILE.getErrorMessage())); - } catch (CoreException coreException) { - uploadFileResponse.addStructureError( - SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, coreException.getMessage())); - } - return Optional.ofNullable(contentMap); - } // todo *************************** move to reusable place! ************************* @@ -646,4 +311,4 @@ public class OrchestrationTemplateCandidateManagerImpl }); } - } +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java index de33ce8cfb..78c4cbf5d9 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java @@ -22,6 +22,7 @@ package org.openecomp.sdc.vendorsoftwareproduct.impl; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; +import org.openecomp.core.converter.datatypes.Constants; import org.openecomp.core.enrichment.api.EnrichmentManager; import org.openecomp.core.enrichment.factory.EnrichmentManagerFactory; import org.openecomp.core.model.dao.EnrichedServiceModelDao; @@ -31,6 +32,7 @@ import org.openecomp.core.util.UniqueValueUtil; import org.openecomp.core.utilities.file.FileContentHandler; import org.openecomp.core.utilities.json.JsonSchemaDataGenerator; import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; import org.openecomp.core.validation.api.ValidationManager; import org.openecomp.core.validation.util.MessageContainerUtil; import org.openecomp.sdc.activityLog.ActivityLogManager; @@ -94,8 +96,6 @@ import org.openecomp.sdc.vendorsoftwareproduct.factory.CompositionEntityDataMana import org.openecomp.sdc.vendorsoftwareproduct.informationArtifact.InformationArtifactGenerator; import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager; import org.openecomp.sdc.vendorsoftwareproduct.services.schemagenerator.SchemaGenerator; -import org.openecomp.sdc.vendorsoftwareproduct.types.ComponentValidationResult; -import org.openecomp.sdc.vendorsoftwareproduct.types.DeploymentFlavorValidationResult; import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse; import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireValidationResult; import org.openecomp.sdc.vendorsoftwareproduct.types.ValidationResponse; @@ -130,7 +130,6 @@ import java.io.IOException; import java.io.OutputStream; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -148,7 +147,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); private static final Logger logger = - LoggerFactory.getLogger(VendorSoftwareProductManagerImpl.class); + LoggerFactory.getLogger(VendorSoftwareProductManagerImpl.class); private OrchestrationTemplateDao orchestrationTemplateDao; private VendorSoftwareProductInfoDao vspInfoDao; @@ -178,7 +177,6 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa * @param enrichedServiceModelDao the enriched service model dao * @param healingManager the healing manager * @param licenseArtifactsService the license artifacts service - * @param compositionEntityDataManager the composition entity data manager * @param informationArtifactGenerator the information artifact generator * @param packageInfoDao the package info dao * @param activityLogManager the activity log manager @@ -186,21 +184,21 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa * @param nicDao the nic dao */ public VendorSoftwareProductManagerImpl( - VersioningManager versioningManager, - VendorSoftwareProductDao vendorSoftwareProductDao, - OrchestrationTemplateDao orchestrationTemplateDataDao, - VendorSoftwareProductInfoDao vspInfoDao, - VendorLicenseFacade vendorLicenseFacade, - ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao, - EnrichedServiceModelDao<ToscaServiceModel, ServiceElement> enrichedServiceModelDao, - HealingManager healingManager, - VendorLicenseArtifactsService licenseArtifactsService, - InformationArtifactGenerator informationArtifactGenerator, - PackageInfoDao packageInfoDao, - ActivityLogManager activityLogManager, - DeploymentFlavorDao deploymentFlavorDao, - NicDao nicDao, - ManualVspToscaManager manualVspToscaManager) { + VersioningManager versioningManager, + VendorSoftwareProductDao vendorSoftwareProductDao, + OrchestrationTemplateDao orchestrationTemplateDataDao, + VendorSoftwareProductInfoDao vspInfoDao, + VendorLicenseFacade vendorLicenseFacade, + ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao, + EnrichedServiceModelDao<ToscaServiceModel, ServiceElement> enrichedServiceModelDao, + HealingManager healingManager, + VendorLicenseArtifactsService licenseArtifactsService, + InformationArtifactGenerator informationArtifactGenerator, + PackageInfoDao packageInfoDao, + ActivityLogManager activityLogManager, + DeploymentFlavorDao deploymentFlavorDao, + NicDao nicDao, + ManualVspToscaManager manualVspToscaManager) { this.versioningManager = versioningManager; this.vendorSoftwareProductDao = vendorSoftwareProductDao; this.orchestrationTemplateDao = orchestrationTemplateDataDao; @@ -222,11 +220,11 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa private void registerToVersioning() { vendorSoftwareProductDao.registerVersioning( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE); serviceModelDao.registerVersioning( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE); enrichedServiceModelDao.registerVersioning( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE); } @Override @@ -235,13 +233,13 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa MDC.put(LoggerConstants.SERVICE_NAME, LoggerServiceName.Checkout_Entity.toString()); Version newVersion = versioningManager - .checkout(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, - vendorSoftwareProductId, user); + .checkout(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, + vendorSoftwareProductId, user); if (newVersion != null) { ActivityLogEntity activityLogEntity = - new ActivityLogEntity(vendorSoftwareProductId, String.valueOf(newVersion.getMajor() + 1), - ActivityType.CHECKOUT.toString(), user, true, "", ""); + new ActivityLogEntity(vendorSoftwareProductId, String.valueOf(newVersion.getMajor() + 1), + ActivityType.CHECKOUT.toString(), user, true, "", ""); activityLogManager.addActionLog(activityLogEntity, user); } @@ -255,18 +253,18 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa mdcDataDebugMessage.debugEntryMessage("VSP id", vendorSoftwareProductId); Version version = - getVersionInfo(vendorSoftwareProductId, VersionableEntityAction.Read, user) - .getActiveVersion(); + getVersionInfo(vendorSoftwareProductId, VersionableEntityAction.Read, user) + .getActiveVersion(); String preVspName = vspInfoDao - .get(new VspDetails(vendorSoftwareProductId, version)).getName(); + .get(new VspDetails(vendorSoftwareProductId, version)).getName(); Version newVersion = versioningManager.undoCheckout( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, - vendorSoftwareProductId, user); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, + vendorSoftwareProductId, user); String postVspName = vspInfoDao - .get(new VspDetails(vendorSoftwareProductId, newVersion)) - .getName(); + .get(new VspDetails(vendorSoftwareProductId, newVersion)) + .getName(); updateUniqueName(preVspName, postVspName); @@ -280,13 +278,13 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa mdcDataDebugMessage.debugEntryMessage("VSP id", vendorSoftwareProductId); Version newVersion = versioningManager.checkin( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, - vendorSoftwareProductId, user, null); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, + vendorSoftwareProductId, user, null); if (newVersion != null) { ActivityLogEntity activityLogEntity = - new ActivityLogEntity(vendorSoftwareProductId, String.valueOf(newVersion.getMajor() + 1), - ActivityType.CHECKIN.toString(), user, true, "", ""); + new ActivityLogEntity(vendorSoftwareProductId, String.valueOf(newVersion.getMajor() + 1), + ActivityType.CHECKIN.toString(), user, true, "", ""); activityLogManager.addActionLog(activityLogEntity, user); } @@ -303,53 +301,66 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa VspDetails vspDetails = getVsp(vspId, version, user); UploadDataEntity uploadData = orchestrationTemplateDao.getOrchestrationTemplate(vspId, version); ToscaServiceModel serviceModel = - serviceModelDao.getServiceModel(vspId, vspDetails.getVersion()); + serviceModelDao.getServiceModel(vspId, vspDetails.getVersion()); ValidationResponse validationResponse = new ValidationResponse(); validationResponse - .setVspErrors(validateCompletedVendorSoftwareProduct(vspDetails, uploadData, serviceModel), - LoggerServiceName.Submit_VSP, LoggerTragetServiceName.SUBMIT_VSP); + .setVspErrors(validateCompletedVendorSoftwareProduct(vspDetails, uploadData, serviceModel), + LoggerServiceName.Submit_VSP, LoggerTragetServiceName.SUBMIT_VSP); if (isCyclicDependencyInComponents(vspId, vspDetails.getVersion())) { Collection<ErrorCode> vspErrors = validationResponse.getVspErrors() == null - ? new ArrayList<>() - : validationResponse.getVspErrors(); + ? new ArrayList<>() + : validationResponse.getVspErrors(); vspErrors.add(ComponentDependencyModelErrorBuilder - .getcyclicDependencyComponentErrorBuilder()); + .getcyclicDependencyComponentErrorBuilder()); validationResponse.setVspErrors(vspErrors, LoggerServiceName.Submit_VSP, - LoggerTragetServiceName.SUBMIT_VSP); + LoggerTragetServiceName.SUBMIT_VSP); } validationResponse.setLicensingDataErrors(validateLicensingData(vspDetails)); validationResponse - .setUploadDataErrors(validateUploadData(uploadData), LoggerServiceName.Submit_VSP, - LoggerTragetServiceName.SUBMIT_VSP); + .setUploadDataErrors(validateUploadData(uploadData,vspDetails), LoggerServiceName.Submit_VSP, + LoggerTragetServiceName.SUBMIT_VSP); validationResponse.setQuestionnaireValidationResult( - validateQuestionnaire(vspDetails.getId(), vspDetails.getVersion(), vspDetails - .getOnboardingMethod())); + validateQuestionnaire(vspDetails.getId(), vspDetails.getVersion(), vspDetails + .getOnboardingMethod())); if (vspDetails.getOnboardingMethod().equals("Manual")) { - validationResponse.setDeploymentFlavorValidationResult( - deploymentFlavorValidation(vspDetails.getId(), vspDetails.getVersion())); - validationResponse.setComponentValidationResult( - componentValidation(vspDetails.getId(), vspDetails.getVersion())); + Collection<ErrorCode> deploymentFlavourValidationErrList = deploymentFlavorValidation(vspDetails.getId(), vspDetails.getVersion()); + if (validationResponse.getVspErrors() != null) { + if(deploymentFlavourValidationErrList != null) + validationResponse.getVspErrors().addAll(deploymentFlavourValidationErrList); + } else { + validationResponse.setVspErrors(deploymentFlavourValidationErrList, LoggerServiceName.Submit_VSP, + LoggerTragetServiceName.SUBMIT_VSP); + } + + Set<CompositionEntityValidationData> compositionEntityValidationData = componentValidation(vspDetails.getId(), vspDetails.getVersion()); + if (validationResponse.getQuestionnaireValidationResult() != null) { + if(!CollectionUtils.isEmpty(compositionEntityValidationData)) + validationResponse.getQuestionnaireValidationResult().getValidationData().addAll(compositionEntityValidationData); + } else { + validationResponse.setQuestionnaireValidationResult(CollectionUtils.isEmpty(compositionEntityValidationData) ? null : + new QuestionnaireValidationResult(compositionEntityValidationData)); + } + //Generate Tosca service model for Manual Onboarding flow VspModelInfo vspModelInfo = manualVspToscaManager.gatherVspInformation(vspId, version, user); serviceModel = manualVspToscaManager.generateToscaModel(vspModelInfo); } - validationResponse.setCompilationErrors( - compile(vspId, vspDetails.getVersion(), serviceModel), - LoggerServiceName.Submit_VSP, LoggerTragetServiceName.SUBMIT_VSP); + compile(vspId, vspDetails.getVersion(), serviceModel), + LoggerServiceName.Submit_VSP, LoggerTragetServiceName.SUBMIT_VSP); if (validationResponse.isValid()) { Version newVersion = versioningManager.submit( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, - vspId, user, null); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, + vspId, user, null); ActivityLogEntity activityLogEntity = new ActivityLogEntity(vspDetails.getId(), String - .valueOf(newVersion.getMajor()), - ActivityType.SUBMIT.toString(), user, true, "", ""); + .valueOf(newVersion.getMajor()), + ActivityType.SUBMIT.toString(), user, true, "", ""); activityLogManager.addActionLog(activityLogEntity, user); } @@ -360,7 +371,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa private boolean isCyclicDependencyInComponents(String vendorSoftwareProductId, Version version) { final Collection<ComponentDependencyModelEntity> componentDependencyModelEntities = - vendorSoftwareProductDao.listComponentDependencies(vendorSoftwareProductId, version); + vendorSoftwareProductDao.listComponentDependencies(vendorSoftwareProductId, version); ComponentDependencyTracker dependencyTracker = new ComponentDependencyTracker(); for (ComponentDependencyModelEntity entity : componentDependencyModelEntities) { @@ -369,76 +380,60 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa return dependencyTracker.isCyclicDependencyPresent(); } - private DeploymentFlavorValidationResult deploymentFlavorValidation(String vspId, - Version version) { + private Collection<ErrorCode> deploymentFlavorValidation(String vspId, + Version version) { mdcDataDebugMessage.debugEntryMessage("VSP id", vspId); Set<CompositionEntityValidationData> validationData = new HashSet<>(); + Collection<ErrorCode> errorCodeList = new ArrayList<>(); Collection<DeploymentFlavorEntity> deploymentFlavors = - vendorSoftwareProductDao.listDeploymentFlavors(vspId, version); + vendorSoftwareProductDao.listDeploymentFlavors(vspId, version); if (!CollectionUtils.isEmpty(deploymentFlavors)) { deploymentFlavors.forEach(deploymentFlavor -> { DeploymentFlavorEntity deployment = vendorSoftwareProductDao.getDeploymentFlavor(vspId, - version, deploymentFlavor.getId()); + version, deploymentFlavor.getId()); DeploymentFlavor deploymentlocalFlavor = deployment.getDeploymentFlavorCompositionData(); if (deploymentlocalFlavor != null) { if (deploymentlocalFlavor.getFeatureGroupId() == null ) { ErrorCode deploymentFlavorErrorBuilder = DeploymentFlavorErrorBuilder. - getFeatureGroupMandatoryErrorBuilder(); - CompositionEntityValidationData compositionEntityValidationData = new - CompositionEntityValidationData(CompositionEntityType.deployment, - deploymentFlavor.getId()); - compositionEntityValidationData.setEntityName(deploymentlocalFlavor.getModel()); - List<String> errors = new ArrayList<>(); - errors.add(deploymentFlavorErrorBuilder.message()); - compositionEntityValidationData.setErrors(errors); - validationData.add(compositionEntityValidationData); + getFeatureGroupMandatoryErrorBuilder(deploymentlocalFlavor.getModel()); + errorCodeList.add(deploymentFlavorErrorBuilder); } List<ComponentComputeAssociation> componetComputeAssociations = new ArrayList<>(); componetComputeAssociations = deploymentlocalFlavor.getComponentComputeAssociations(); if (CollectionUtils.isEmpty(componetComputeAssociations)) { CompositionEntityValidationData compositionEntityValidationData = new - CompositionEntityValidationData(CompositionEntityType.deployment,deploymentFlavor - .getId()); + CompositionEntityValidationData(CompositionEntityType.deployment,deploymentFlavor + .getId()); compositionEntityValidationData.setEntityName(deployment - .getDeploymentFlavorCompositionData().getModel()); + .getDeploymentFlavorCompositionData().getModel()); ErrorCode deploymentFlavorErrorBuilder = DeploymentFlavorErrorBuilder - .getInvalidComponentComputeAssociationErrorBuilder(); - List<String> errors = new ArrayList<>(); - errors.add(deploymentFlavorErrorBuilder.message()); - compositionEntityValidationData.setErrors(errors); - validationData.add(compositionEntityValidationData); + .getInvalidComponentComputeAssociationErrorBuilder(deploymentlocalFlavor.getModel()); + + errorCodeList.add(deploymentFlavorErrorBuilder); } else { componetComputeAssociations.forEach(componetComputeAssociation -> { if (componetComputeAssociation == null - || !(componetComputeAssociation.getComponentId() != null + || !(componetComputeAssociation.getComponentId() != null && componetComputeAssociation.getComputeFlavorId() != null)) { CompositionEntityValidationData compositionEntityValidationData = new - CompositionEntityValidationData(CompositionEntityType.deployment, - deploymentFlavor.getId()); + CompositionEntityValidationData(CompositionEntityType.deployment, + deploymentFlavor.getId()); compositionEntityValidationData.setEntityName(deployment - .getDeploymentFlavorCompositionData().getModel()); + .getDeploymentFlavorCompositionData().getModel()); ErrorCode deploymentFlavorErrorBuilder = DeploymentFlavorErrorBuilder - .getInvalidComponentComputeAssociationErrorBuilder(); - List<String> errors = new ArrayList<>(); - errors.add(deploymentFlavorErrorBuilder.message()); - compositionEntityValidationData.setErrors(errors); - validationData.add(compositionEntityValidationData); + .getInvalidComponentComputeAssociationErrorBuilder(deploymentlocalFlavor.getModel()); + + errorCodeList.add(deploymentFlavorErrorBuilder); } }); } } }); } - if (CollectionUtils.isEmpty(validationData)) { - return null; - } - DeploymentFlavorValidationResult deploymentFlavorValidationResult = new - DeploymentFlavorValidationResult(validationData); - return deploymentFlavorValidationResult; - + return errorCodeList; } - private ComponentValidationResult componentValidation(String vspId, Version version) { + private Set<CompositionEntityValidationData> componentValidation(String vspId, Version version) { mdcDataDebugMessage.debugEntryMessage("VSP id", vspId); Set<CompositionEntityValidationData> validationData = new HashSet<>(); @@ -450,12 +445,8 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa }); } - if (CollectionUtils.isEmpty(validationData)) { - return null; - } - ComponentValidationResult componentValidationResult = - new ComponentValidationResult(validationData); - return componentValidationResult; + + return validationData; } private void validateNic(String vspId, Version version, @@ -465,15 +456,15 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa if (CollectionUtils.isNotEmpty(nics)) { nics.forEach(nicEntity -> { NicEntity nic = nicDao.get(new NicEntity(vspId, version, component.getId(), - nicEntity.getId())); + nicEntity.getId())); NetworkType networkType = nic.getNicCompositionData().getNetworkType(); String networkId = nic.getNicCompositionData().getNetworkId(); if (networkType.equals(NetworkType.Internal) && networkId == null) { CompositionEntityValidationData compositionEntityValidationData = new - CompositionEntityValidationData(CompositionEntityType.nic, nic.getId()); + CompositionEntityValidationData(CompositionEntityType.nic, nic.getId()); compositionEntityValidationData.setEntityName(nic.getNicCompositionData().getName()); ErrorCode nicInternalNetworkErrorBuilder = NicInternalNetworkErrorBuilder - .getNicNullNetworkIdInternalNetworkIdErrorBuilder(); + .getNicNullNetworkIdInternalNetworkIdErrorBuilder(); List<String> errors = new ArrayList<>(); errors.add(nicInternalNetworkErrorBuilder.message()); compositionEntityValidationData.setErrors(errors); @@ -487,14 +478,14 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa Set<CompositionEntityValidationData> validationData, ComponentEntity component) { Collection<ImageEntity> images = vendorSoftwareProductDao.listImages(vspId,version, - component.getId()); + component.getId()); if (CollectionUtils.isEmpty(images)) { CompositionEntityValidationData compositionEntityValidationData = new - CompositionEntityValidationData(component.getType(),component.getId()); + CompositionEntityValidationData(component.getType(),component.getId()); compositionEntityValidationData.setEntityName(component.getComponentCompositionData() - .getDisplayName()); + .getDisplayName()); ErrorCode vfcMissingImageErrorBuilder = - ComponentErrorBuilder.VfcMissingImageErrorBuilder(); + ComponentErrorBuilder.VfcMissingImageErrorBuilder(); List<String> errors = new ArrayList<>(); errors.add(vfcMissingImageErrorBuilder.message()); compositionEntityValidationData.setErrors(errors); @@ -505,7 +496,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa private List<ErrorCode> validateCompletedVendorSoftwareProduct( - VspDetails vspDetails, UploadDataEntity uploadData, Object serviceModel) { + VspDetails vspDetails, UploadDataEntity uploadData, Object serviceModel) { List<ErrorCode> errors = new ArrayList<>(); @@ -527,10 +518,10 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa if (vspDetails.getOnboardingMethod().equals("Manual")) { //Manual Onboarding specific validations Collection<DeploymentFlavorEntity> deploymentFlavorEntities = vendorSoftwareProductDao - .listDeploymentFlavors(vspDetails.getId(), vspDetails.getVersion()); + .listDeploymentFlavors(vspDetails.getId(), vspDetails.getVersion()); if (CollectionUtils.isEmpty(deploymentFlavorEntities) ) { ErrorCode vspMissingDeploymentFlavorErrorBuilder = - VendorSoftwareProductInvalidErrorBuilder.VspMissingDeploymentFlavorErrorBuilder(); + VendorSoftwareProductInvalidErrorBuilder.VspMissingDeploymentFlavorErrorBuilder(); errors.add(vspMissingDeploymentFlavorErrorBuilder); } errors.addAll(validateMandatoryLicenseFields(vspDetails)); @@ -539,10 +530,10 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa if (uploadData == null || uploadData.getContentData() == null || serviceModel == null) { errors.add(VendorSoftwareProductInvalidErrorBuilder .VendorSoftwareProductMissingServiceModelErrorBuilder(vspDetails.getId(), - vspDetails.getVersion())); + vspDetails.getVersion())); } if (vspDetails.getVlmVersion() != null || vspDetails.getLicenseAgreement() != null - || vspDetails.getFeatureGroups() != null) { + || vspDetails.getFeatureGroups() != null) { errors.addAll(validateMandatoryLicenseFields(vspDetails)); } } @@ -553,7 +544,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa List<ErrorCode> errors = new ArrayList<>(); if (vspDetails.getVlmVersion() == null) { errors.add(createMissingMandatoryFieldError( - "licensing version (in the format of: {integer}.{integer})")); + "licensing version (in the format of: {integer}.{integer})")); } if (vspDetails.getLicenseAgreement() == null) { errors.add(createMissingMandatoryFieldError("license agreement")); @@ -572,13 +563,13 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa mdcDataDebugMessage.debugEntryMessage(null); mdcDataDebugMessage.debugExitMessage(null); return SchemaGenerator - .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.vsp, schemaInput); + .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.vsp, schemaInput); } private static void sortVspListByModificationTimeDescOrder( - List<VersionedVendorSoftwareProductInfo> vsps) { + List<VersionedVendorSoftwareProductInfo> vsps) { vsps.sort((o1, o2) -> o2.getVspDetails().getWritetimeMicroSeconds() - .compareTo(o1.getVspDetails().getWritetimeMicroSeconds())); + .compareTo(o1.getVspDetails().getWritetimeMicroSeconds())); } @@ -591,21 +582,21 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa enrichedServiceModelDao.deleteAll(vendorSoftwareProductId, version); EnrichmentManager<ToscaServiceModel> enrichmentManager = - EnrichmentManagerFactory.getInstance().createInterface(); + EnrichmentManagerFactory.getInstance().createInterface(); enrichmentManager.init(vendorSoftwareProductId, version); enrichmentManager.setModel(serviceModel); Map<String, List<ErrorMessage>> enrichErrors = enrichmentManager.enrich(); if (MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, enrichErrors))) { logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.ENRICHMENT_COMPLETED - + vendorSoftwareProductId); + + vendorSoftwareProductId); } else { enrichErrors.values().forEach(errorList -> - auditIfContainsErrors(errorList,vendorSoftwareProductId,AuditMessages.ENRICHMENT_ERROR)); + auditIfContainsErrors(errorList,vendorSoftwareProductId,AuditMessages.ENRICHMENT_ERROR)); } enrichedServiceModelDao - .storeServiceModel(vendorSoftwareProductId, version, enrichmentManager.getModel()); + .storeServiceModel(vendorSoftwareProductId, version, enrichmentManager.getModel()); return enrichErrors; } @@ -614,15 +605,15 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa mdcDataDebugMessage.debugEntryMessage("VSP id", vspDetails.getId()); if (vspDetails.getVendorId() == null || vspDetails.getVlmVersion() == null - || vspDetails.getLicenseAgreement() == null - || CollectionUtils.isEmpty(vspDetails.getFeatureGroups())) { + || vspDetails.getLicenseAgreement() == null + || CollectionUtils.isEmpty(vspDetails.getFeatureGroups())) { return null; } mdcDataDebugMessage.debugExitMessage("VSP id", vspDetails.getId()); return vendorLicenseFacade - .validateLicensingData(vspDetails.getVendorId(), vspDetails.getVlmVersion(), - vspDetails.getLicenseAgreement(), vspDetails.getFeatureGroups()); + .validateLicensingData(vspDetails.getVendorId(), vspDetails.getVlmVersion(), + vspDetails.getLicenseAgreement(), vspDetails.getFeatureGroups()); } @Override @@ -637,8 +628,8 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa vspInfoDao.create(validationVsp); Version version = versioningManager.create( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, - validationVsp.getId(), user); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, + validationVsp.getId(), user); validationVsp.setVersion(version); createUniqueName(VALIDATION_VSP_NAME); @@ -652,17 +643,19 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa validateUniqueName(vspDetails.getName()); + vspDetails.setOnboardingOrigin(OnboardingTypesEnum.NONE.toString()); + vspInfoDao.create(vspDetails);//id will be set in the dao vspInfoDao.updateQuestionnaireData(vspDetails.getId(), null, - new JsonSchemaDataGenerator(getVspQuestionnaireSchema(null)).generateData()); + new JsonSchemaDataGenerator(getVspQuestionnaireSchema(null)).generateData()); Version version = versioningManager - .create(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, - vspDetails.getId(), user); + .create(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, + vspDetails.getId(), user); vspDetails.setVersion(version); ActivityLogEntity activityLogEntity = new ActivityLogEntity(vspDetails.getId(), String - .valueOf(vspDetails.getVersion().getMajor() + 1), - ActivityType.CREATE_NEW.toString(), user, true, "", ""); + .valueOf(vspDetails.getVersion().getMajor() + 1), + ActivityType.CREATE_NEW.toString(), user, true, "", ""); activityLogManager.addActionLog(activityLogEntity, user); String vspName = vspDetails.getName(); createUniqueName(vspName); @@ -675,8 +668,8 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa mdcDataDebugMessage.debugEntryMessage(null); Map<String, VersionInfo> idToVersionsInfo = versioningManager.listEntitiesVersionInfo( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, user, - VersionableEntityAction.Read); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, user, + VersionableEntityAction.Read); List<VersionedVendorSoftwareProductInfo> vsps = new ArrayList<>(); for (Map.Entry<String, VersionInfo> entry : idToVersionsInfo.entrySet()) { @@ -702,10 +695,10 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa } } catch (RuntimeException rte) { logger.error( - "Error trying to retrieve vsp[" + entry.getKey() + "] version[" + version.toString - () + "] " + - "message:" + rte - .getMessage()); + "Error trying to retrieve vsp[" + entry.getKey() + "] version[" + version.toString + () + "] " + + "message:" + rte + .getMessage()); } } @@ -723,11 +716,11 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa VspDetails retrieved = vspInfoDao.get(vspDetails); if (!retrieved.getOnboardingMethod().equals(vspDetails.getOnboardingMethod())) { final ErrorCode onboardingMethodUpdateErrorCode = OnboardingMethodErrorBuilder - .getOnboardingUpdateError(); + .getOnboardingUpdateError(); MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.UPDATE_VSP, ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), onboardingMethodUpdateErrorCode.message()); + LoggerTragetServiceName.UPDATE_VSP, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), onboardingMethodUpdateErrorCode.message()); throw new CoreException(onboardingMethodUpdateErrorCode); } @@ -747,20 +740,20 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa private void updateDeploymentFlavor(VspDetails vspDetails, String user) { final List<String> featureGroups = vspDetails.getFeatureGroups(); - if (featureGroups != null && !featureGroups.isEmpty() ) { + if (featureGroups != null) { final Collection<DeploymentFlavorEntity> deploymentFlavorEntities = deploymentFlavorDao - .list(new DeploymentFlavorEntity(vspDetails.getId(), vspDetails - .getVersion(), null)); + .list(new DeploymentFlavorEntity(vspDetails.getId(), vspDetails + .getVersion(), null)); if (Objects.nonNull(deploymentFlavorEntities)) { deploymentFlavorEntities.forEach(deploymentFlavorEntity -> { final String featureGroupId = - deploymentFlavorEntity.getDeploymentFlavorCompositionData().getFeatureGroupId(); + deploymentFlavorEntity.getDeploymentFlavorCompositionData().getFeatureGroupId(); if ( !featureGroups.contains(featureGroupId)) { DeploymentFlavor deploymentFlavorCompositionData = - deploymentFlavorEntity.getDeploymentFlavorCompositionData(); + deploymentFlavorEntity.getDeploymentFlavorCompositionData(); deploymentFlavorCompositionData.setFeatureGroupId(null); deploymentFlavorEntity.setDeploymentFlavorCompositionData - (deploymentFlavorCompositionData); + (deploymentFlavorCompositionData); vendorSoftwareProductDao.updateDeploymentFlavor(deploymentFlavorEntity); } }); @@ -776,12 +769,20 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa VspDetails vsp = vspInfoDao.get(new VspDetails(vspId, version)); if (vsp == null) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.GET_VSP, ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), "Requested VSP not found"); + LoggerTragetServiceName.GET_VSP, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), "Requested VSP not found"); throw new CoreException(new VendorSoftwareProductNotFoundErrorBuilder(vspId).build()); } vsp.setValidationData(orchestrationTemplateDao.getValidationData(vspId, version)); + if(Objects.isNull(vsp.getOnboardingOrigin())){ + vsp.setOnboardingOrigin(OnboardingTypesEnum.ZIP.toString()); + } + + if(Objects.isNull(vsp.getNetworkPackageName())){ + vsp.setNetworkPackageName("Upload File"); + } + mdcDataDebugMessage.debugExitMessage("VSP id", vspId); return vsp; } @@ -789,12 +790,12 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa @Override public Version callAutoHeal(String vspId, VersionInfo versionInfo, VspDetails vendorSoftwareProductInfo, String user) - throws Exception { + throws Exception { switch (versionInfo.getStatus()) { case Locked: if (user.equals(versionInfo.getLockingUser())) { autoHeal(vspId, versionInfo.getActiveVersion(), vendorSoftwareProductInfo, - versionInfo.getLockingUser()); + versionInfo.getLockingUser()); } return versionInfo.getActiveVersion(); case Available: @@ -830,12 +831,12 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa mdcDataDebugMessage.debugEntryMessage("VSP id", vspId); MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.DELETE_VSP, ErrorLevel.ERROR.name(), - LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), "Unsupported operation"); + LoggerTragetServiceName.DELETE_VSP, ErrorLevel.ERROR.name(), + LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), "Unsupported operation"); mdcDataDebugMessage.debugExitMessage("VSP id", vspId); throw new UnsupportedOperationException( - VendorSoftwareProductConstants.UNSUPPORTED_OPERATION_ERROR); + VendorSoftwareProductConstants.UNSUPPORTED_OPERATION_ERROR); } @Override @@ -845,8 +846,8 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa VersionInfo versionInfo = getVersionInfo(vspId, VersionableEntityAction.Read, user); version = VersionStatus.Locked.equals(versionInfo.getStatus()) - ? versionInfo.getActiveVersion() - : checkout(vspId, user); + ? versionInfo.getActiveVersion() + : checkout(vspId, user); version.setStatus(VersionStatus.Locked); healingManager.healAll(getHealingParamsAsMap(vspId, version, user)); @@ -896,24 +897,24 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa if (version == null) { errorMessage = "Package not found"; MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.GET_TRANSLATED_FILE, ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage); + LoggerTragetServiceName.GET_TRANSLATED_FILE, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage); throw new CoreException(new PackageNotFoundErrorBuilder(vspId).build()); } else if (!version.isFinal()) { errorMessage = "Invalid requested version"; MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.GET_VERSION_INFO, ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage); + LoggerTragetServiceName.GET_VERSION_INFO, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage); throw new CoreException(new RequestedVersionInvalidErrorBuilder().build()); } PackageInfo packageInfo = - packageInfoDao.get(new PackageInfo(vspId, version)); + packageInfoDao.get(new PackageInfo(vspId, version)); if (packageInfo == null) { errorMessage = "Package not found"; MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.GET_TRANSLATED_FILE, ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage); + LoggerTragetServiceName.GET_TRANSLATED_FILE, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage); throw new CoreException(new PackageNotFoundErrorBuilder(vspId, version).build()); } @@ -921,8 +922,8 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa if (translatedFileBuffer == null) { errorMessage = "Package not found"; MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.GET_TRANSLATED_FILE, ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage); + LoggerTragetServiceName.GET_TRANSLATED_FILE, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage); throw new CoreException(new PackageInvalidErrorBuilder(vspId, version).build()); } @@ -935,10 +936,10 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa } catch (IOException exception) { errorMessage = "Can't create package"; MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.CREATE_TRANSLATED_FILE, ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage); + LoggerTragetServiceName.CREATE_TRANSLATED_FILE, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), errorMessage); throw new CoreException(new TranslationFileCreationErrorBuilder(vspId, version).build(), - exception); + exception); } mdcDataDebugMessage.debugExitMessage("VSP id", vspId); @@ -961,12 +962,12 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa try (final ZipOutputStream zos = new ZipOutputStream(baos); ZipInputStream zipStream = new ZipInputStream( - new ByteArrayInputStream(contentData.array()))) { + new ByteArrayInputStream(contentData.array()))) { zos.write(contentData.array()); } catch (IOException exception) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.GET_UPLOADED_HEAT, ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), "Can't get uploaded HEAT"); + LoggerTragetServiceName.GET_UPLOADED_HEAT, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), "Can't get uploaded HEAT"); throw new CoreException(new FileCreationErrorBuilder(vspId).build(), exception); } @@ -980,11 +981,11 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa if (!version.isFinal()) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.CREATE_PACKAGE, ErrorLevel.ERROR.name(), - LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), "Can't create package"); + LoggerTragetServiceName.CREATE_PACKAGE, ErrorLevel.ERROR.name(), + LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), "Can't create package"); throw new CoreException( - new CreatePackageForNonFinalVendorSoftwareProductErrorBuilder(vspId, version) - .build()); + new CreatePackageForNonFinalVendorSoftwareProductErrorBuilder(vspId, version) + .build()); } ToscaServiceModel toscaServiceModel = enrichedServiceModelDao.getServiceModel(vspId, version); @@ -994,13 +995,13 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa PackageInfo packageInfo = createPackageInfo(vspId, vspDetails); ToscaFileOutputServiceCsarImpl toscaServiceTemplateServiceCsar = - new ToscaFileOutputServiceCsarImpl(); + new ToscaFileOutputServiceCsarImpl(); FileContentHandler licenseArtifacts = licenseArtifactsService - .createLicenseArtifacts(vspDetails.getId(), vspDetails.getVendorId(), vlmVersion, - vspDetails.getFeatureGroups(), user); + .createLicenseArtifacts(vspDetails.getId(), vspDetails.getVendorId(), vlmVersion, + vspDetails.getFeatureGroups(), user); //todo add tosca validation here packageInfo.setTranslatedFile(ByteBuffer.wrap( - toscaServiceTemplateServiceCsar.createOutputFile(toscaServiceModel, licenseArtifacts))); + toscaServiceTemplateServiceCsar.createOutputFile(toscaServiceModel, licenseArtifacts))); packageInfoDao.create(packageInfo); @@ -1031,7 +1032,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa VspQuestionnaireEntity retrieved = vspInfoDao.getQuestionnaire(vspId, version); VersioningUtil.validateEntityExistence(retrieved, new VspQuestionnaireEntity(vspId, version), - VspDetails.ENTITY_TYPE); + VspDetails.ENTITY_TYPE); String questionnaireData = retrieved.getQuestionnaireData(); @@ -1055,8 +1056,9 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa } - private Map<String, List<ErrorMessage>> validateUploadData(UploadDataEntity uploadData) - throws IOException { + private Map<String, List<ErrorMessage>> validateUploadData(UploadDataEntity uploadData, + VspDetails vspDetails) + throws IOException { Map<String, List<ErrorMessage>> validationErrors = new HashMap<>(); if (uploadData == null || uploadData.getContentData() == null) { @@ -1064,22 +1066,24 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa } FileContentHandler fileContentMap = - CommonUtil.validateAndUploadFileContent(uploadData.getContentData().array()); + CommonUtil.validateAndUploadFileContent(OnboardingTypesEnum.getOnboardingTypesEnum + (vspDetails.getOnboardingOrigin()), + uploadData.getContentData().array()); //todo - check ValidationManager validationManager = - ValidationManagerUtil.initValidationManager(fileContentMap); + ValidationManagerUtil.initValidationManager(fileContentMap); validationErrors.putAll(validationManager.validate()); return - MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, validationErrors)) - ? null : validationErrors; + MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, validationErrors)) + ? null : validationErrors; } private VersionInfo getVersionInfo(String vendorSoftwareProductId, VersionableEntityAction action, String user) { return versioningManager.getEntityVersionInfo( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, - vendorSoftwareProductId, user, action); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, + vendorSoftwareProductId, user, action); } @@ -1090,9 +1094,9 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa // The apis of CompositionEntityDataManager used here are stateful! // so, it must be re-created from scratch when it is used! CompositionEntityDataManager compositionEntityDataManager = - CompositionEntityDataManagerFactory.getInstance().createInterface(); + CompositionEntityDataManagerFactory.getInstance().createInterface(); compositionEntityDataManager - .addEntity(vspInfoDao.getQuestionnaire(vspId, version), null); + .addEntity(vspInfoDao.getQuestionnaire(vspId, version), null); Collection<NicEntity> nics = vendorSoftwareProductDao.listNicsByVsp(vspId, version); @@ -1103,16 +1107,16 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa Nic nic = nicEntity.getNicCompositionData(); if (nic != null && nic.getName() != null) { List<String> nicNames = - nicNamesByComponent.computeIfAbsent(nicEntity.getComponentId(), k -> new ArrayList<>()); + nicNamesByComponent.computeIfAbsent(nicEntity.getComponentId(), k -> new ArrayList<>()); nicNames.add(nic.getName()); } } Collection<ComponentEntity> components = - vendorSoftwareProductDao.listComponentsCompositionAndQuestionnaire(vspId, version); + vendorSoftwareProductDao.listComponentsCompositionAndQuestionnaire(vspId, version); components.forEach(component -> compositionEntityDataManager.addEntity(component, - new ComponentQuestionnaireSchemaInput(nicNamesByComponent.get(component.getId()), - JsonUtil.json2Object(component.getQuestionnaireData(), Map.class)))); + new ComponentQuestionnaireSchemaInput(nicNamesByComponent.get(component.getId()), + JsonUtil.json2Object(component.getQuestionnaireData(), Map.class)))); Collection<ComputeEntity> computes = vendorSoftwareProductDao.listComputesByVsp(vspId, version); computes.forEach(compute -> compositionEntityDataManager.addEntity(compute, null)); @@ -1123,7 +1127,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa } Map<CompositionEntityId, Collection<String>> errorsByEntityId = - compositionEntityDataManager.validateEntitiesQuestionnaire(); + compositionEntityDataManager.validateEntitiesQuestionnaire(); if (MapUtils.isNotEmpty(errorsByEntityId)) { compositionEntityDataManager.buildTrees(); compositionEntityDataManager.addErrorsToTrees(errorsByEntityId); @@ -1133,7 +1137,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa mdcDataDebugMessage.debugExitMessage("VSP id", vspId); return new QuestionnaireValidationResult( - compositionEntityDataManager.getAllErrorsByVsp(vspId)); + compositionEntityDataManager.getAllErrorsByVsp(vspId)); } mdcDataDebugMessage.debugExitMessage("VSP id", vspId); @@ -1154,11 +1158,11 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa File infoArtifactFile; try { infoArtifactAsByteBuffer = ByteBuffer.wrap(informationArtifactGenerator.generate(vspId, - version).getBytes()); + version).getBytes()); infoArtifactFile = - new File( - String.format(VendorSoftwareProductConstants.INFORMATION_ARTIFACT_NAME, vspName)); + new File( + String.format(VendorSoftwareProductConstants.INFORMATION_ARTIFACT_NAME, vspName)); OutputStream out = new BufferedOutputStream(new FileOutputStream(infoArtifactFile)); out.write(infoArtifactAsByteBuffer.array()); out.close(); @@ -1172,18 +1176,18 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa void validateUniqueName(String vspName) { UniqueValueUtil.validateUniqueValue( - VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME, vspName); + VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME, vspName); } void createUniqueName(String vspName) { UniqueValueUtil.createUniqueValue( - VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME, vspName); + VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME, vspName); } void updateUniqueName(String oldVspName, String newVspName) { UniqueValueUtil.updateUniqueValue( - VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME, - oldVspName, newVspName); + VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME, + oldVspName, newVspName); } @Override @@ -1197,7 +1201,7 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa errorList.forEach(errorMessage -> { if (errorMessage.getLevel().equals(ErrorLevel.ERROR)) { logger.audit(AuditMessages.AUDIT_MSG + String.format(auditType, errorMessage.getMessage(), - vspId)); + vspId)); } }); } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/BaseOrchestrationTemplateHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/BaseOrchestrationTemplateHandler.java new file mode 100644 index 0000000000..c7fb43770d --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/BaseOrchestrationTemplateHandler.java @@ -0,0 +1,100 @@ +package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration; + +import org.apache.commons.collections4.MapUtils; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; +import org.openecomp.sdc.common.errors.Messages; +import org.openecomp.sdc.common.utils.SdcCommon; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; +import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; +import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService; +import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse; +import org.openecomp.sdc.versioning.dao.types.Version; + +import java.io.InputStream; +import java.util.Optional; +import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters; +public abstract class BaseOrchestrationTemplateHandler implements OrchestrationTemplateFileHandler { + protected static final Logger logger = + LoggerFactory.getLogger(BaseOrchestrationTemplateHandler.class); + protected static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); + + @Override + public UploadFileResponse upload(String vspId, Version version, InputStream fileToUpload, String user, + CandidateService candidateService, VspDetails vspDetails) { + UploadFileResponse uploadFileResponse = new UploadFileResponse(); + uploadFileResponse.setOnboardingType(getHandlerType()); + if (isNotEmptyFileToUpload(fileToUpload, uploadFileResponse, candidateService)) { + return uploadFileResponse; + } + + byte[] uploadedFileData = FileUtils.toByteArray(fileToUpload); + if (isInvalidRawZipData(uploadFileResponse, uploadedFileData, candidateService)) { + return uploadFileResponse; + } + + Optional<FileContentHandler> optionalContentMap = + getFileContentMap(uploadFileResponse, uploadedFileData); + if (!optionalContentMap.isPresent()) { + logger.error(getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(), getHandlerType().toString())); + uploadFileResponse + .addStructureError( + SdcCommon.UPLOAD_FILE, + new ErrorMessage(ErrorLevel.ERROR, + getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(), getHandlerType().toString()))); + + mdcDataDebugMessage.debugExitMessage("VSP id", vspId); + return uploadFileResponse; + } + + if (!MapUtils.isEmpty(uploadFileResponse.getErrors())) { + + mdcDataDebugMessage.debugExitMessage("VSP id", vspId); + return uploadFileResponse; + } + if (updateCandidateData(vspId, user, candidateService, vspDetails, uploadFileResponse, + uploadedFileData, optionalContentMap)) + return uploadFileResponse; + + mdcDataDebugMessage.debugExitMessage("VSP id", vspId); + return uploadFileResponse; + + } + + protected abstract boolean updateCandidateData(String vspId, String user, CandidateService candidateService, + VspDetails vspDetails, UploadFileResponse uploadFileResponse, + byte[] uploadedFileData, + Optional<FileContentHandler> optionalContentMap); + + + private boolean isNotEmptyFileToUpload(InputStream fileToUpload, + UploadFileResponse uploadFileResponse, CandidateService candidateService) { + Optional<ErrorMessage> errorMessage = + candidateService.validateNonEmptyFileToUpload(fileToUpload); + if (errorMessage.isPresent()) { + uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get()); + return true; + } + return false; + } + + protected boolean isInvalidRawZipData(UploadFileResponse uploadFileResponse, + byte[] uploadedFileData, CandidateService candidateService) { + Optional<ErrorMessage> errorMessage; + errorMessage = candidateService.validateRawZipData(uploadedFileData); + if (errorMessage.isPresent()) { + uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get()); + return true; + } + return false; + } + + public abstract Optional<FileContentHandler> getFileContentMap(UploadFileResponse uploadFileResponse, + byte[] uploadedFileData); + protected abstract OnboardingTypesEnum getHandlerType(); +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateCSARHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateCSARHandler.java new file mode 100644 index 0000000000..53d34749e7 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateCSARHandler.java @@ -0,0 +1,154 @@ +package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration; + +import org.apache.commons.lang3.tuple.Pair; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; +import org.openecomp.sdc.common.errors.CoreException; +import org.openecomp.sdc.common.errors.Messages; +import org.openecomp.sdc.common.utils.CommonUtil; +import org.openecomp.sdc.common.utils.SdcCommon; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; +import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.OnboardingManifest; +import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService; +import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters; +import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.CSARConstants.*; +public class OrchestrationTemplateCSARHandler extends BaseOrchestrationTemplateHandler + implements OrchestrationTemplateFileHandler { + + + @Override + public Optional<FileContentHandler> getFileContentMap(UploadFileResponse uploadFileResponse, + byte[] uploadedFileData) { + FileContentHandler contentMap = null; + List<String> folderList = new ArrayList<>(); + try { + Pair<FileContentHandler, List<String>> fileContentMapFromOrchestrationCandidateZip = CommonUtil.getFileContentMapFromOrchestrationCandidateZip(uploadedFileData); + contentMap = fileContentMapFromOrchestrationCandidateZip.getKey(); + folderList = fileContentMapFromOrchestrationCandidateZip.getRight(); + } catch (IOException exception) { + uploadFileResponse.addStructureError( + SdcCommon.UPLOAD_FILE, + new ErrorMessage(ErrorLevel.ERROR, Messages.INVALID_CSAR_FILE.getErrorMessage())); + } catch (CoreException coreException) { + uploadFileResponse.addStructureError( + SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, coreException.getMessage())); + } + validateContent(uploadFileResponse, contentMap, folderList); + return Optional.ofNullable(contentMap); + } + + private void validateContent(UploadFileResponse uploadFileResponse, FileContentHandler contentMap, List<String> folderList) { + validateManifest(uploadFileResponse, contentMap); + validateFileExist(uploadFileResponse, contentMap, MAIN_SERVICE_TEMPLATE_YAML_FILE_NAME); + validateNoExtraFiles(uploadFileResponse, contentMap); + validateFolders(uploadFileResponse, folderList); + } + + private void validateManifest(UploadFileResponse uploadFileResponse, FileContentHandler contentMap) { + if (!validateFileExist(uploadFileResponse, contentMap, MAIN_SERVICE_TEMPLATE_MF_FILE_NAME)){ + return; + } + InputStream fileContent = contentMap.getFileContent(MAIN_SERVICE_TEMPLATE_MF_FILE_NAME); + OnboardingManifest onboardingManifest = new OnboardingManifest(fileContent); + if (!onboardingManifest.isValid()){ + onboardingManifest.getErrors().forEach(error -> uploadFileResponse.addStructureError( + SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, error))); + } + } + + private void validateNoExtraFiles(UploadFileResponse uploadFileResponse, FileContentHandler contentMap) { + List<String> unwantedFiles = contentMap.getFileList().stream() + .filter(this::filterFiles).collect(Collectors.toList()); + if (!unwantedFiles.isEmpty()) { + unwantedFiles.stream().filter(this::filterFiles).forEach(unwantedFile -> + uploadFileResponse.addStructureError( + SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, + getErrorWithParameters(Messages.CSAR_FILES_NOT_ALLOWED.getErrorMessage(), + unwantedFile)))); + + ; + } + } + + private void validateFolders(UploadFileResponse uploadFileResponse, List<String> folderList) { + List<String> filterResult = folderList.stream().filter(this::filterFolders).collect(Collectors.toList()); + if (!filterResult.isEmpty()) { + folderList.stream().filter(this::filterFolders).forEach( unwantedFolder -> + uploadFileResponse.addStructureError( + SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, + getErrorWithParameters(Messages.CSAR_DIRECTORIES_NOT_ALLOWED.getErrorMessage(), + unwantedFolder)))); + + } + } + private boolean filterFiles(String inFileName) { + boolean valid = ELIGIBLE_FILES.stream().anyMatch(fileName -> fileName.equals(inFileName)); + if (valid){ + return !valid; + } + return filterFolders(inFileName); + } + + private boolean filterFolders(String fileName) { + return !ELIGBLE_FOLDERS.stream().anyMatch(dirName -> fileName.startsWith(dirName)); + } + + private boolean validateFileExist(UploadFileResponse uploadFileResponse, FileContentHandler contentMap, String fileName) { + + boolean containsFile = contentMap.containsFile(fileName); + if (!containsFile) { + uploadFileResponse.addStructureError( + SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, + getErrorWithParameters(Messages.CSAR_FILE_NOT_FOUND.getErrorMessage(), fileName))); + } + return containsFile; + } + + @Override + protected boolean updateCandidateData(String vspId, String user, CandidateService candidateService, + VspDetails vspDetails, UploadFileResponse uploadFileResponse, + byte[] uploadedFileData, Optional<FileContentHandler> optionalContentMap) { + try { + candidateService.updateCandidateUploadData(new OrchestrationTemplateCandidateData( + ByteBuffer.wrap(uploadedFileData), ""), vspDetails.getId()); + } catch (Exception exception) { + logger.error(getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(), + getHandlerType().toString()), exception); + uploadFileResponse + .addStructureError( + SdcCommon.UPLOAD_FILE, + new ErrorMessage(ErrorLevel.ERROR, exception.getMessage())); + + mdcDataDebugMessage.debugExitMessage("VSP id", vspId); + return true; + } + return false; + } + + + @Override + protected OnboardingTypesEnum getHandlerType() { + return OnboardingTypesEnum.CSAR; + } + + @Override + protected boolean isInvalidRawZipData(UploadFileResponse uploadFileResponse, + byte[] uploadedFileData, CandidateService candidateService) { + return super.isInvalidRawZipData(uploadFileResponse, uploadedFileData, candidateService); + + } +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateFileHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateFileHandler.java new file mode 100644 index 0000000000..3f7d18de9f --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateFileHandler.java @@ -0,0 +1,12 @@ +package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration; + +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; +import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService; +import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse; +import org.openecomp.sdc.versioning.dao.types.Version; + +import java.io.InputStream; +public interface OrchestrationTemplateFileHandler { + UploadFileResponse upload(String vspId, Version version, InputStream fileToUpload, String user, + CandidateService candidateService, VspDetails vspDetails); +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateZipHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateZipHandler.java new file mode 100644 index 0000000000..626d941911 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateZipHandler.java @@ -0,0 +1,55 @@ +package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration; + +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; +import org.openecomp.sdc.common.errors.Messages; +import org.openecomp.sdc.common.utils.SdcCommon; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; +import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService; +import org.openecomp.sdc.vendorsoftwareproduct.services.utils.CandidateEntityBuilder; +import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse; + +import java.util.Optional; + +import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters; +public class OrchestrationTemplateZipHandler extends BaseOrchestrationTemplateHandler + implements OrchestrationTemplateFileHandler { + + @Override + public Optional<FileContentHandler> getFileContentMap(UploadFileResponse uploadFileResponse, + byte[] uploadedFileData) { + return OrchestrationUtil.getFileContentMap(OnboardingTypesEnum.ZIP, uploadFileResponse, uploadedFileData); + } + + @Override + protected boolean updateCandidateData(String vspId, String user, CandidateService candidateService, + VspDetails vspDetails, UploadFileResponse uploadFileResponse, + byte[] uploadedFileData, Optional<FileContentHandler> optionalContentMap) { + try { + OrchestrationTemplateCandidateData candidateData = + new CandidateEntityBuilder(candidateService) + .buildCandidateEntityFromZip(vspDetails, uploadedFileData, optionalContentMap.get(), + uploadFileResponse.getErrors(), user); + candidateService.updateCandidateUploadData(candidateData, vspDetails.getId()); + } catch (Exception exception) { + logger.error(getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(), + getHandlerType().toString()),exception); + uploadFileResponse + .addStructureError( + SdcCommon.UPLOAD_FILE, + new ErrorMessage(ErrorLevel.ERROR, exception.getMessage())); + + mdcDataDebugMessage.debugExitMessage("VSP id", vspId); + return true; + } + return false; + } + + @Override + protected OnboardingTypesEnum getHandlerType() { + return OnboardingTypesEnum.ZIP; + } +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationUploadFactory.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationUploadFactory.java new file mode 100644 index 0000000000..85f92662ea --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationUploadFactory.java @@ -0,0 +1,29 @@ +package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration; + +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.core.utilities.CommonMethods; +import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationUtil.ORCHESTRATION_CONFIG_NAMESPACE; +import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationUtil.ORCHESTRATION_IMPL_KEY; + +public class OrchestrationUploadFactory { + private static Map<String, ImplementationConfiguration> fileHanlders; + + static { + Configuration config = ConfigurationManager.lookup(); + fileHanlders = new ConcurrentHashMap<>(config.populateMap(ORCHESTRATION_CONFIG_NAMESPACE, + ORCHESTRATION_IMPL_KEY, ImplementationConfiguration.class)); + + } + + public static final OrchestrationTemplateFileHandler createOrchestrationTemplateFileHandler(String filePrefix) { + ImplementationConfiguration orchestrationTemplateFileHandler = fileHanlders.get(filePrefix); + return CommonMethods.newInstance(orchestrationTemplateFileHandler.getImplementationClass(), + OrchestrationTemplateFileHandler.class); + } +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationUtil.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationUtil.java new file mode 100644 index 0000000000..9d7421f336 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationUtil.java @@ -0,0 +1,282 @@ +package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration; + +import org.apache.commons.collections4.CollectionUtils; +import org.openecomp.core.model.dao.ServiceModelDao; +import org.openecomp.core.model.dao.ServiceModelDaoFactory; +import org.openecomp.core.util.UniqueValueUtil; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; +import org.openecomp.sdc.common.errors.CoreException; +import org.openecomp.sdc.common.errors.Messages; +import org.openecomp.sdc.common.utils.CommonUtil; +import org.openecomp.sdc.common.utils.SdcCommon; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree; +import org.openecomp.sdc.heat.datatypes.structure.ValidationStructureList; +import org.openecomp.sdc.heat.services.tree.HeatTreeManager; +import org.openecomp.sdc.heat.services.tree.HeatTreeManagerUtil; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentArtifactDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.MonitoringUploadDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ProcessDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ProcessDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.UploadData; +import org.openecomp.sdc.vendorsoftwareproduct.factory.CompositionDataExtractorFactory; +import org.openecomp.sdc.vendorsoftwareproduct.factory.CompositionEntityDataManagerFactory; +import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionDataExtractor; +import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager; +import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse; +import org.openecomp.sdc.versioning.dao.types.Version; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +import static org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.GENERAL_COMPONENT_ID; +import static org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.UniqueValues.PROCESS_NAME; + +public class OrchestrationUtil { + + public static final String ORCHESTRATION_CONFIG_NAMESPACE = "orchestration"; + public static final String ORCHESTRATION_IMPL_KEY = "orchestration_impl"; + + + private static VendorSoftwareProductDao vendorSoftwareProductDao = + VendorSoftwareProductDaoFactory.getInstance().createInterface(); + private static NicDao nicDao = NicDaoFactory.getInstance().createInterface(); + private static ComponentArtifactDao componentArtifactDao = MonitoringUploadDaoFactory.getInstance().createInterface(); + private static ProcessDao processDao = ProcessDaoFactory.getInstance().createInterface(); + private static OrchestrationTemplateDao orchestrationTemplateDataDao = + OrchestrationTemplateDaoFactory.getInstance().createInterface(); + private static ComponentDao componentDao = + ComponentDaoFactory.getInstance().createInterface(); + private static ServiceModelDao serviceModelDao = ServiceModelDaoFactory.getInstance() + .createInterface(); + private static CompositionEntityDataManager compositionEntityDataManager = + CompositionEntityDataManagerFactory.getInstance().createInterface(); + private static CompositionDataExtractor compositionDataExtractor = + CompositionDataExtractorFactory.getInstance().createInterface(); + + public static Optional<FileContentHandler> getFileContentMap(OnboardingTypesEnum type, + UploadFileResponse uploadFileResponse, + byte[] uploadedFileData) { + FileContentHandler contentMap = null; + try { + contentMap = CommonUtil.validateAndUploadFileContent(type, uploadedFileData); + } catch (IOException exception) { + uploadFileResponse.addStructureError( + SdcCommon.UPLOAD_FILE, + new ErrorMessage(ErrorLevel.ERROR, Messages.INVALID_ZIP_FILE.getErrorMessage())); + } catch (CoreException coreException) { + uploadFileResponse.addStructureError( + SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, coreException.getMessage())); + } + return Optional.ofNullable(contentMap); + } + + public static void backupComponentsQuestionnaireBeforeDelete(String vspId, Version activeVersion, + Map<String, String> componentsQustanniare, + Map<String, Map<String, String>> + componentNicsQustanniare, + Map<String, Collection<ComponentMonitoringUploadEntity>> + componentMibList, + Map<String, Collection<ProcessEntity>> + componentProcesses, + Map<String, ProcessEntity> processArtifact) { + //backup VSP processes + backupProcess(vspId, activeVersion, GENERAL_COMPONENT_ID, GENERAL_COMPONENT_ID, + componentProcesses, processArtifact); + Collection<ComponentEntity> componentsCompositionAndQuestionnaire = vendorSoftwareProductDao + .listComponentsCompositionAndQuestionnaire(vspId, + activeVersion); + componentsCompositionAndQuestionnaire.forEach(componentEntity -> { + String componentName = componentEntity.getComponentCompositionData().getName(); + componentsQustanniare.put(componentName, componentEntity + .getQuestionnaireData()); + Collection<NicEntity> + nics = nicDao.list(new NicEntity(vspId, activeVersion, componentEntity.getId(), null)); + //backup mib + Collection<ComponentMonitoringUploadEntity> componentMib = + componentArtifactDao.listArtifacts(new + ComponentMonitoringUploadEntity(vspId, activeVersion, componentEntity.getId(), + null)); + if (CollectionUtils.isNotEmpty(componentMib)) { + componentMibList.put(componentName,componentMib); + } + + //backup component processes + backupProcess(vspId, activeVersion, componentEntity.getId(), componentName, + componentProcesses, processArtifact); + if (CollectionUtils.isNotEmpty(nics)) { + Map<String, String> nicsQustanniare = new HashMap<>(); + nics.forEach(nicEntity -> { + NicEntity nic = nicDao.get(new NicEntity(vspId, activeVersion, componentEntity.getId(), + nicEntity.getId())); + NicEntity nicQuestionnaire = nicDao.getQuestionnaireData(vspId, activeVersion, + componentEntity.getId(), nicEntity.getId()); + + nicsQustanniare + .put(nicEntity.getNicCompositionData().getName(), + nicQuestionnaire.getQuestionnaireData()); + }); + componentNicsQustanniare.put(componentName, nicsQustanniare); + } + }); + } + + private static void backupProcess(String vspId, Version activeVersion, String componentId, + String componentName, Map<String, + Collection<ProcessEntity>> processes, + Map<String, ProcessEntity> processArtifact) { + Collection<ProcessEntity> processList = vendorSoftwareProductDao.listProcesses(vspId, + activeVersion, componentId); + if (!processList.isEmpty()) { + processes.put(componentName, processList); + processList.forEach(process -> { + //ProcessArtifactEntity artifact = vendorSoftwareProductDao.getProcessArtifact(vspId, + // activeVersion, componentId, process.getId()); + ProcessEntity artifact = + processDao.get(new ProcessEntity(vspId, activeVersion, componentId, process.getId())); + if (artifact.getArtifact() != null) { + processArtifact.put(process.getId(), artifact); + } + }); + } + } + + public static void retainComponentQuestionnaireData(String vspId, Version activeVersion, + Map<String, String> componentsQustanniare, + Map<String, Map<String, String>> + componentNicsQustanniare, + Map<String, Collection<ComponentMonitoringUploadEntity>> componentMibList, + Map<String, Collection<ProcessEntity>> processes, + Map<String, ProcessEntity> processArtifact) { + //VSP processes + restoreProcess(vspId, activeVersion, GENERAL_COMPONENT_ID, GENERAL_COMPONENT_ID, processes, + processArtifact); + Collection<ComponentEntity> + components = vendorSoftwareProductDao.listComponents(vspId, activeVersion); + components.forEach(componentEntity -> { + String componentName = componentEntity.getComponentCompositionData().getName(); + if (componentsQustanniare.containsKey(componentName)) { + componentDao.updateQuestionnaireData(vspId, activeVersion, + componentEntity.getId(), + componentsQustanniare.get(componentEntity.getComponentCompositionData() + .getName())); + if (componentNicsQustanniare.containsKey(componentName)) { + Map<String, String> nicsQustanniare = componentNicsQustanniare.get(componentName); + Collection<NicEntity> + nics = + nicDao.list(new NicEntity(vspId, activeVersion, componentEntity.getId(), null)); + nics.forEach(nicEntity -> { + if (nicsQustanniare.containsKey(nicEntity.getNicCompositionData().getName())) { + nicDao.updateQuestionnaireData(vspId, activeVersion, + componentEntity.getId(), nicEntity.getId(), + nicsQustanniare.get(nicEntity.getNicCompositionData().getName())); + } + }); + } + //MIB //todo add for VES_EVENTS + if (componentMibList.containsKey(componentName)) { + Collection<ComponentMonitoringUploadEntity> mibList = + componentMibList.get(componentName); + mibList.forEach(mib -> { + mib.setComponentId(componentEntity.getId()); + componentArtifactDao.create(mib); + }); + } + //VFC processes + restoreProcess(vspId, activeVersion, componentEntity.getId(), componentName, processes, + processArtifact); + } + }); + } + + private static void restoreProcess(String vspId, Version activeVersion, String componentId, + String componentName, + Map<String, Collection<ProcessEntity>> processes, + Map<String, ProcessEntity> processArtifact) { + if (processes.containsKey(componentName)) { + Collection<ProcessEntity> processList = processes.get(componentName); + processList.forEach(process -> { + //Reatin VFC process + if (!GENERAL_COMPONENT_ID.equals(componentId) && processArtifact.containsKey(process.getId + ())) { + ProcessEntity artifact = processArtifact.get(process.getId()); + artifact.setComponentId(componentId); + UniqueValueUtil.createUniqueValue(PROCESS_NAME, vspId, activeVersion.toString(), + componentId, process.getName()); + vendorSoftwareProductDao.createProcess(artifact); + } + }); + } + } + + public static void deleteUploadDataAndContent(String vspId, Version version) { + //fixme change this when more tables are zusammenized + vendorSoftwareProductDao.deleteUploadData(vspId, version); + } + + public static void saveUploadData(String vspId, Version activeVersion, InputStream uploadedFileData, + FileContentHandler fileContentMap, HeatStructureTree tree) { + Map<String, Object> manifestAsMap = + fileContentMap.containsFile(SdcCommon.MANIFEST_NAME) ? + (Map<String, Object>) JsonUtil.json2Object(fileContentMap.getFileContent( + SdcCommon.MANIFEST_NAME), Map.class) + : new HashMap<>(); + + UploadData uploadData = new UploadData(); + uploadData.setContentData(ByteBuffer.wrap(FileUtils.toByteArray(uploadedFileData))); + uploadData.setValidationDataStructure(new ValidationStructureList(tree)); + uploadData.setPackageName(Objects.isNull(manifestAsMap.get("name")) ? null : + (String) manifestAsMap.get("name")); + uploadData.setPackageVersion(Objects.isNull(manifestAsMap.get("version")) ? null : + (String) manifestAsMap.get("version")); + orchestrationTemplateDataDao.updateOrchestrationTemplateData(vspId, uploadData); + } + + public static void saveServiceModel(String vspId, + Version version, + ToscaServiceModel serviceModelToExtract, + ToscaServiceModel serviceModelToStore){ + if (serviceModelToExtract != null) { + serviceModelDao.storeServiceModel(vspId, version, serviceModelToStore); + //Extracting the compostion data from the output service model of the first phase of + // translation + compositionEntityDataManager.saveCompositionData(vspId, version, + compositionDataExtractor.extractServiceCompositionData(serviceModelToExtract)); +// OrchestrationUtil.retainComponentQuestionnaireData(vspId, version, componentsQuestionnaire, +// componentNicsQuestionnaire, componentMibList, processes, processArtifact); + } + } + + public static HeatStructureTree createHeatTree(FileContentHandler fileContentMap, + Map<String, List<ErrorMessage>> validationErrors){ + HeatTreeManager heatTreeManager = HeatTreeManagerUtil.initHeatTreeManager(fileContentMap); + heatTreeManager.createTree(); + heatTreeManager.addErrors(validationErrors); + return heatTreeManager.getTree(); + } + +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/CSARConstants.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/CSARConstants.java new file mode 100644 index 0000000000..0d204ef2c0 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/CSARConstants.java @@ -0,0 +1,18 @@ +package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar; + +import com.google.common.collect.ImmutableSet; +import static com.google.common.collect.ImmutableSet.of; +public class CSARConstants { + + public static final ImmutableSet<String> ELIGBLE_FOLDERS = of("Artifacts/","Definitions/", + "Licenses/", "TOSCA-Metadata/"); + + public static final String MAIN_SERVICE_TEMPLATE_MF_FILE_NAME = "MainServiceTemplate.mf"; + public static final String MAIN_SERVICE_TEMPLATE_YAML_FILE_NAME = "MainServiceTemplate.yaml"; + public static final ImmutableSet<String> ELIGIBLE_FILES = + of(MAIN_SERVICE_TEMPLATE_MF_FILE_NAME,MAIN_SERVICE_TEMPLATE_YAML_FILE_NAME); + + public static final String METADATA_MF_ATTRIBUTE = "metadata"; + public static final String SOURCE_MF_ATTRIBUTE = "source"; + public static final String SEPERATOR_MF_ATTRIBUTE = ":"; +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/OnboardingManifest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/OnboardingManifest.java new file mode 100644 index 0000000000..d88d883e67 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/OnboardingManifest.java @@ -0,0 +1,141 @@ +package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import org.apache.commons.lang.StringUtils; +import org.openecomp.sdc.common.errors.Messages; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; + +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.*; + +import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters; +import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.CSARConstants.*; + +public class OnboardingManifest { + private static final Logger logger = LoggerFactory.getLogger(OnboardingManifest.class); + private Map<String, String> metadata; + private List<String> sources; + private List<String> errors; + private State state; + private enum State { + Start, ProcessMetadata, ProcessSources, Error + } + + public OnboardingManifest(InputStream is) { + errors = new ArrayList<>(); + sources = new ArrayList<>(); + metadata = new HashMap<>(); + parseManifest(is); + } + + private void parseManifest(InputStream is) { + try { + ImmutableList<String> lines = readAllLines(is); + state = State.Start; + + for (String line : lines) { + line = line.trim(); + if (!StringUtils.isEmpty(line.trim())) { + state = processLine(state, line); + } + } + if (errors.isEmpty()) { + if (metadata.isEmpty()) { + errors.add(Messages.MANIFEST_NO_METADATA.getErrorMessage()); + } + if (sources.isEmpty()) { + errors.add(Messages.MANIFEST_NO_SOURCES.getErrorMessage()); + } + } + } catch (IOException e){ + logger.error(e.getMessage(),e); + errors.add(Messages.MANIFEST_PARSER_INTERNAL.getErrorMessage()); + } + } + + private State processLine(State state, String line) { + switch (state) { + case Start: + if (line.trim().equals(METADATA_MF_ATTRIBUTE + SEPERATOR_MF_ATTRIBUTE)) { + state = State.ProcessMetadata; + } else { + reportError(line); + } + break; + case ProcessMetadata: + String[] metaSplit = line.split(SEPERATOR_MF_ATTRIBUTE); + if (metaSplit.length < 2){ + reportError(line); + break; + } + if (!metaSplit[0].equals(SOURCE_MF_ATTRIBUTE)){ + String value = line.replace(metaSplit[0] + SEPERATOR_MF_ATTRIBUTE, "").trim(); + metadata.put(metaSplit[0],value); + } else { + state = State.ProcessSources; + processSourceLine(line); + } + break; + case ProcessSources: + processSourceLine(line); + + break; + case Error: + break; + + } return state; + } + + private void processSourceLine(String line) { + if (line.startsWith(SOURCE_MF_ATTRIBUTE+SEPERATOR_MF_ATTRIBUTE)){ + String value = line.replaceAll(SOURCE_MF_ATTRIBUTE + SEPERATOR_MF_ATTRIBUTE, "").trim(); + sources.add(value); + }else { + reportError(line); + } + } + + private void reportError(String line) { + errors.add(getErrorWithParameters(Messages.MANIFEST_INVALID_LINE.getErrorMessage(), line)); + state = State.Error; + } + + private ImmutableList<String> readAllLines(InputStream is) throws IOException { + ImmutableList.Builder<String> builder = ImmutableList.<String> builder(); + try (Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8.newDecoder()); + BufferedReader bufferedReader = new BufferedReader(reader);) { + for (; ; ) { + String line = bufferedReader.readLine(); + if (line == null) + break; + builder.add(line); + } + } + return builder.build(); + } + + public Map<String, String> getMetadata() { + if (!isValid()){ + return Collections.EMPTY_MAP; + } + return ImmutableMap.copyOf(metadata); + } + + public List<String> getSources() { + if (!isValid()){ + return Collections.EMPTY_LIST; + } + return ImmutableList.copyOf(sources); + } + + public List<String> getErrors() { + return ImmutableList.copyOf(errors); + } + + public boolean isValid() { + return errors.isEmpty(); + } +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationProcessFactory.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationProcessFactory.java new file mode 100644 index 0000000000..db43e0084e --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationProcessFactory.java @@ -0,0 +1,64 @@ +package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process; + +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.core.utilities.CommonMethods; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; +import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration; +import org.openecomp.sdc.vendorsoftwareproduct.types.ConfigConstants; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; + +import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationUtil.ORCHESTRATION_CONFIG_NAMESPACE; +public class OrchestrationProcessFactory { + + private static final String confFile = "config-orchestration.json"; + private static Map<String, ImplementationConfiguration> processImplMap; + + static { + Configuration config = ConfigurationManager.lookup(); + processImplMap = new ConcurrentHashMap<>(config.populateMap(ORCHESTRATION_CONFIG_NAMESPACE, + ConfigConstants.PROCESS_IMPL_KEY, ImplementationConfiguration.class)); + + } + + public static Optional<OrchestrationTemplateProcessHandler> getInstance(String filePrefix) { + filePrefix = filePrefix == null ? null : filePrefix.toLowerCase().trim(); + if (filePrefix == null) { + return Optional.empty(); + } + + OnboardingTypesEnum onboardingTypesEnum = OnboardingTypesEnum.getOnboardingTypesEnum(filePrefix); + if (onboardingTypesEnum == null) { + return Optional.empty(); + } + + try { + return Optional.of(createInstance(processImplMap.get(onboardingTypesEnum.toString()))); + }catch (Exception e){ + return Optional.empty(); + } + } + + private static Map<String, String> getOrchestrationImplMap(){ + try { + return FileUtils.readViaInputStream(confFile, + stream -> JsonUtil.json2Object(stream, Map.class)); + }catch (Exception e){ + return new HashMap<>(); + } + } + + private static OrchestrationTemplateProcessHandler createInstance(ImplementationConfiguration implClass) + throws Exception { + OrchestrationTemplateProcessHandler handler; + handler = + CommonMethods.newInstance(implClass.getImplementationClass(), OrchestrationTemplateProcessHandler.class); + return handler; + } +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessCsarHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessCsarHandler.java new file mode 100644 index 0000000000..4866d93411 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessCsarHandler.java @@ -0,0 +1,133 @@ +package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process; + +import org.apache.commons.collections4.MapUtils; +import org.openecomp.core.converter.ToscaConverter; +import org.openecomp.core.impl.ToscaConverterImpl; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; +import org.openecomp.core.validation.util.MessageContainerUtil; +import org.openecomp.sdc.common.errors.CoreException; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree; +import org.openecomp.sdc.heat.services.tree.ToscaTreeManager; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; +import org.openecomp.sdc.logging.messages.AuditMessages; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; +import org.openecomp.sdc.vendorsoftwareproduct.factory.CandidateServiceFactory; +import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationUtil; +import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService; +import org.openecomp.sdc.vendorsoftwareproduct.types.OrchestrationTemplateActionResponse; +import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse; +import org.openecomp.sdc.versioning.dao.types.Version; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class OrchestrationTemplateProcessCsarHandler implements OrchestrationTemplateProcessHandler { + + private static Logger logger = + LoggerFactory.getLogger(OrchestrationTemplateProcessCsarHandler.class); + private ToscaConverter toscaConverter = new ToscaConverterImpl(); + private CandidateService candidateService = + CandidateServiceFactory.getInstance().createInterface(); + ToscaTreeManager toscaTreeManager = new ToscaTreeManager(); + + @Override + public OrchestrationTemplateActionResponse process(VspDetails vspDetails, + OrchestrationTemplateCandidateData candidateData, + String user) { + String vspId = vspDetails.getId(); + Version version = vspDetails.getVersion(); + logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.CSAR_VALIDATION_STARTED + vspId); + OrchestrationTemplateActionResponse response = new OrchestrationTemplateActionResponse(); + UploadFileResponse uploadFileResponse = new UploadFileResponse(); + Optional<FileContentHandler> fileContent = + OrchestrationUtil + .getFileContentMap( + OnboardingTypesEnum.CSAR, uploadFileResponse, candidateData.getContentData().array()); + + if(fileContent.isPresent()){ + try { + FileContentHandler fileContentHandler = fileContent.get(); + processCsar(vspId, version, fileContentHandler, candidateData, response); + } catch (CoreException e){ + logger.error(e.getMessage()); + throw e; + } catch (Exception e){ + logger.error(e.getMessage()); + } + } + + return response; + } + + private void processCsar(String vspId, Version version, + FileContentHandler fileContentHandler, + OrchestrationTemplateCandidateData candidateData, + OrchestrationTemplateActionResponse response) throws IOException { + + + response.setFileNames(new ArrayList<>(fileContentHandler.getFileList())); + Map<String, List<ErrorMessage>> errors = validateCsar(fileContentHandler, response); + if(!isValid(errors)){ + return; + } + + HeatStructureTree tree = toscaTreeManager.getTree(); + + Map<String, String> componentsQuestionnaire = new HashMap<>(); + Map<String, Map<String, String>> componentNicsQuestionnaire = new HashMap<>(); + Map<String, Collection<ComponentMonitoringUploadEntity>> componentMibList = new HashMap<>(); + Map<String, Collection<ProcessEntity>> processes = new HashMap<>(); + Map<String, ProcessEntity> processArtifact = new HashMap<>(); + + OrchestrationUtil.backupComponentsQuestionnaireBeforeDelete(vspId, + version, componentsQuestionnaire, + componentNicsQuestionnaire, componentMibList, processes, processArtifact); + + Optional<ByteArrayInputStream> zipByteArrayInputStream = candidateService + .fetchZipFileByteArrayInputStream(vspId, candidateData, null, OnboardingTypesEnum.CSAR, errors); + + OrchestrationUtil.deleteUploadDataAndContent(vspId, version); + OrchestrationUtil.saveUploadData( + vspId, version, zipByteArrayInputStream.get(), fileContentHandler, tree); + + ToscaServiceModel toscaServiceModel = toscaConverter.convert(fileContentHandler); + OrchestrationUtil.saveServiceModel(vspId, version, toscaServiceModel, toscaServiceModel); + + } + + private void addFiles(FileContentHandler fileContentHandler){ + for(Map.Entry<String, byte[]> fileEntry : fileContentHandler.getFiles().entrySet()){ + toscaTreeManager.addFile(fileEntry.getKey(), fileEntry.getValue()); + } + } + + private Map<String, List<ErrorMessage>> validateCsar(FileContentHandler fileContentHandler, + OrchestrationTemplateActionResponse response){ + + + Map<String, List<ErrorMessage>> errors = new HashMap<>(); + addFiles(fileContentHandler); + toscaTreeManager.createTree(); + toscaTreeManager.addErrors(errors); + //todo - add tosca validation here to the existing validation framework + return errors; + } + + private boolean isValid(Map<String, List<ErrorMessage>> errors){ + return MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, errors)); + } +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessHandler.java new file mode 100644 index 0000000000..8b513b4347 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessHandler.java @@ -0,0 +1,12 @@ +package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process; + + +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; +import org.openecomp.sdc.vendorsoftwareproduct.types.OrchestrationTemplateActionResponse; + +public interface OrchestrationTemplateProcessHandler { + OrchestrationTemplateActionResponse process(VspDetails vspDetails, + OrchestrationTemplateCandidateData candidateData, + String user); +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessZipHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessZipHandler.java new file mode 100644 index 0000000000..cceacd47b3 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/process/OrchestrationTemplateProcessZipHandler.java @@ -0,0 +1,184 @@ +package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.openecomp.core.model.dao.ServiceModelDao; +import org.openecomp.core.model.dao.ServiceModelDaoFactory; +import org.openecomp.core.translator.datatypes.TranslatorOutput; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; +import org.openecomp.core.validation.util.MessageContainerUtil; +import org.openecomp.sdc.activityLog.ActivityLogManager; +import org.openecomp.sdc.activityLog.ActivityLogManagerFactory; +import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity; +import org.openecomp.sdc.common.errors.Messages; +import org.openecomp.sdc.common.utils.SdcCommon; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; +import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage; +import org.openecomp.sdc.logging.messages.AuditMessages; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; +import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil; +import org.openecomp.sdc.validation.util.ValidationManagerUtil; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; +import org.openecomp.sdc.vendorsoftwareproduct.factory.CandidateServiceFactory; +import org.openecomp.sdc.vendorsoftwareproduct.factory.CompositionDataExtractorFactory; +import org.openecomp.sdc.vendorsoftwareproduct.factory.CompositionEntityDataManagerFactory; +import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationUtil; +import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionDataExtractor; +import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager; +import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService; +import org.openecomp.sdc.vendorsoftwareproduct.types.OrchestrationTemplateActionResponse; +import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse; +import org.openecomp.sdc.vendorsoftwareproduct.types.candidateheat.FilesDataStructure; +import org.openecomp.sdc.vendorsoftwareproduct.utils.VendorSoftwareProductUtils; +import org.openecomp.sdc.versioning.dao.types.Version; +import org.openecomp.sdcrests.activitylog.types.ActivityType; + +import java.io.ByteArrayInputStream; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import static org.openecomp.sdc.logging.messages.AuditMessages.HEAT_VALIDATION_ERROR; + +public class OrchestrationTemplateProcessZipHandler implements OrchestrationTemplateProcessHandler { + Logger logger = LoggerFactory.getLogger(OrchestrationTemplateProcessZipHandler.class); + private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); + private CandidateService candidateService = + CandidateServiceFactory.getInstance().createInterface(); + private ServiceModelDao serviceModelDao = ServiceModelDaoFactory.getInstance().createInterface(); + private CompositionEntityDataManager compositionEntityDataManager = + CompositionEntityDataManagerFactory.getInstance().createInterface(); + private CompositionDataExtractor compositionDataExtractor = + CompositionDataExtractorFactory.getInstance().createInterface(); + private ActivityLogManager activityLogManager = + ActivityLogManagerFactory.getInstance().createInterface(); + + + public OrchestrationTemplateProcessZipHandler(){} + + public OrchestrationTemplateActionResponse process(VspDetails vspDetails, + OrchestrationTemplateCandidateData candidateData, + String user) { + String vspId = vspDetails.getId(); + Version version = vspDetails.getVersion(); + logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_VALIDATION_STARTED + + vspId); + OrchestrationTemplateActionResponse response = new OrchestrationTemplateActionResponse(); + UploadFileResponse uploadFileResponse = new UploadFileResponse(); + Optional<FileContentHandler> fileContent = + OrchestrationUtil + .getFileContentMap( + OnboardingTypesEnum.ZIP, uploadFileResponse, candidateData.getContentData().array()); + if (!fileContent.isPresent()) { + response.addStructureErrors(uploadFileResponse.getErrors()); + mdcDataDebugMessage.debugExitMessage("VSP id", vspId); + response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId, + HEAT_VALIDATION_ERROR)); + return response; + } + + Map<String, List<ErrorMessage>> uploadErrors = uploadFileResponse.getErrors(); + FileContentHandler fileContentMap = fileContent.get(); + FilesDataStructure structure = + JsonUtil.json2Object(candidateData.getFilesDataStructure(), FilesDataStructure.class); + + if (CollectionUtils.isNotEmpty(structure.getUnassigned())) { + response.addErrorMessageToMap(SdcCommon.UPLOAD_FILE, + Messages.FOUND_UNASSIGNED_FILES.getErrorMessage(), ErrorLevel.ERROR); + + mdcDataDebugMessage.debugExitMessage("VSP id", vspId); + response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId, + HEAT_VALIDATION_ERROR)); + return response; + } + + + String manifest = candidateService.createManifest(vspDetails, structure); + fileContentMap.addFile(SdcCommon.MANIFEST_NAME, manifest.getBytes()); + + Optional<ByteArrayInputStream> zipByteArrayInputStream = candidateService + .fetchZipFileByteArrayInputStream( + vspId, candidateData, manifest, OnboardingTypesEnum.ZIP, uploadErrors); + if (!zipByteArrayInputStream.isPresent()) { + response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId, + HEAT_VALIDATION_ERROR)); + return response; + } + + HeatStructureTree tree = createAndValidateHeatTree(response, fileContentMap); + + Map<String, String> componentsQuestionnaire = new HashMap<>(); + Map<String, Map<String, String>> componentNicsQuestionnaire = new HashMap<>(); + Map<String, Collection<ComponentMonitoringUploadEntity>> componentMibList = new HashMap<>(); + Map<String, Collection<ProcessEntity>> processes = new HashMap<>(); + Map<String, ProcessEntity> processArtifact = new HashMap<>(); + + OrchestrationUtil.backupComponentsQuestionnaireBeforeDelete(vspId, + version, componentsQuestionnaire, + componentNicsQuestionnaire, componentMibList, processes, processArtifact); + + OrchestrationUtil.deleteUploadDataAndContent(vspId, version); + OrchestrationUtil.saveUploadData(vspId, version, zipByteArrayInputStream.get(), fileContentMap, + tree); + + response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId, + HEAT_VALIDATION_ERROR)); + if ( MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, response.getErrors + ()))) { + logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_VALIDATION_COMPLETED + vspId); + } + + logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_TRANSLATION_STARTED + vspId); + + TranslatorOutput translatorOutput = + HeatToToscaUtil.loadAndTranslateTemplateData(fileContentMap); + + ToscaServiceModel toscaServiceModel = translatorOutput.getToscaServiceModel(); + OrchestrationUtil.saveServiceModel(vspId, version, translatorOutput + .getNonUnifiedToscaServiceModel(), toscaServiceModel); + OrchestrationUtil.retainComponentQuestionnaireData(vspId, version, componentsQuestionnaire, + componentNicsQuestionnaire, componentMibList, processes, processArtifact); + + logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_TRANSLATION_COMPLETED + vspId); + uploadFileResponse.addStructureErrors(uploadErrors); + + ActivityLogEntity activityLogEntity = + new ActivityLogEntity(vspId, String.valueOf(version.getMajor() + 1), + ActivityType.UPLOAD_HEAT.toString(), user, true, "", ""); + activityLogManager.addActionLog(activityLogEntity, user); + + mdcDataDebugMessage.debugExitMessage("VSP id", vspId); + return response; + } + + private HeatStructureTree createAndValidateHeatTree(OrchestrationTemplateActionResponse response, + FileContentHandler fileContentMap) { + VendorSoftwareProductUtils.addFileNamesToUploadFileResponse(fileContentMap, response); + Map<String, List<ErrorMessage>> validationErrors = + ValidationManagerUtil.initValidationManager(fileContentMap).validate(); + response.getErrors().putAll(validationErrors); + + return OrchestrationUtil.createHeatTree(fileContentMap, validationErrors); + } + + private void printAuditForErrors(List<ErrorMessage> errorList, String vspId, String auditType) { + + errorList.forEach(errorMessage -> { + if (errorMessage.getLevel().equals(ErrorLevel.ERROR)) { + logger.audit(AuditMessages.AUDIT_MSG + String.format(auditType, errorMessage.getMessage(), + vspId)); + } + }); + } +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/ConfigConstants.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/ConfigConstants.java new file mode 100644 index 0000000000..85c6fcb7b5 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/ConfigConstants.java @@ -0,0 +1,6 @@ +package org.openecomp.sdc.vendorsoftwareproduct.types; + +public class ConfigConstants { + public static final String NAMESPACE = "Orchestration"; + public static final String PROCESS_IMPL_KEY = "process_impl"; +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/UploadFileResponse.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/UploadFileResponse.java index 99f3fa1fdf..ca0eed2153 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/UploadFileResponse.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/UploadFileResponse.java @@ -21,6 +21,7 @@ package org.openecomp.sdc.vendorsoftwareproduct.types; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; import org.openecomp.sdc.datatypes.error.ErrorLevel; import org.openecomp.sdc.datatypes.error.ErrorMessage; @@ -35,6 +36,8 @@ import java.util.Map; public class UploadFileResponse { private Map<String, List<ErrorMessage>> errors = new HashMap<>(); private UploadFileStatus status = UploadFileStatus.Success; + private OnboardingTypesEnum onboardingType; + private String networkPackageName; public UploadFileStatus getStatus() { return status; @@ -44,6 +47,22 @@ public class UploadFileResponse { this.status = status; } + public OnboardingTypesEnum getOnboardingType() { + return onboardingType; + } + + public void setOnboardingType(OnboardingTypesEnum onboardingTypesEnum) { + this.onboardingType = onboardingTypesEnum; + } + + public String getNetworkPackageName() { + return networkPackageName; + } + + public void setNetworkPackageName(String networkPackageName) { + this.networkPackageName = networkPackageName; + } + /** * Add structure error. * diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/ValidationResponse.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/ValidationResponse.java index ea5bef13dc..09e7a40ec5 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/ValidationResponse.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/ValidationResponse.java @@ -41,9 +41,6 @@ public class ValidationResponse { private Map<String, List<ErrorMessage>> uploadDataErrors; private Map<String, List<ErrorMessage>> compilationErrors; private QuestionnaireValidationResult questionnaireValidationResult; - private ComponentValidationResult componentValidationResult; - private DeploymentFlavorValidationResult deploymentFlavorValidationResult; - public boolean isValid() { return valid; @@ -106,7 +103,7 @@ public class ValidationResponse { } VendorSoftwareProductUtils - .setErrorsIntoLogger(uploadDataErrors, serviceName, targetServiceName); + .setErrorsIntoLogger(uploadDataErrors, serviceName, targetServiceName); } public Map<String, List<ErrorMessage>> getCompilationErrors() { @@ -128,7 +125,7 @@ public class ValidationResponse { } VendorSoftwareProductUtils - .setErrorsIntoLogger(uploadDataErrors, serviceName, targetServiceName); + .setErrorsIntoLogger(uploadDataErrors, serviceName, targetServiceName); } public QuestionnaireValidationResult getQuestionnaireValidationResult() { @@ -141,48 +138,10 @@ public class ValidationResponse { * @param questionnaireValidationResult the questionnaire validation result */ public void setQuestionnaireValidationResult( - QuestionnaireValidationResult questionnaireValidationResult) { + QuestionnaireValidationResult questionnaireValidationResult) { this.questionnaireValidationResult = questionnaireValidationResult; if (questionnaireValidationResult != null && !questionnaireValidationResult.isValid()) { valid = false; } } - - - public ComponentValidationResult getComponentValidationResult() { - return componentValidationResult; - } - - /** - * Sets Component validation result. - * - * @param componentValidationResult the Component validation result - */ - public void setComponentValidationResult( - ComponentValidationResult componentValidationResult) { - this.componentValidationResult = componentValidationResult; - if (componentValidationResult != null && !componentValidationResult.isValid()) { - valid = false; - } - } - - - public DeploymentFlavorValidationResult getDeploymentFlavorValidationResult() { - return deploymentFlavorValidationResult; - } - - /** - * Sets Deployment validation result. - * - * @param deploymentFlavorValidationResult the Deployment validation result - */ - public void setDeploymentFlavorValidationResult( - DeploymentFlavorValidationResult deploymentFlavorValidationResult) { - this.deploymentFlavorValidationResult = deploymentFlavorValidationResult; - if (deploymentFlavorValidationResult != null && !deploymentFlavorValidationResult.isValid()) { - valid = false; - } - } - - } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/resources/config-orchestration.json b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/resources/config-orchestration.json new file mode 100644 index 0000000000..9193b818b7 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/resources/config-orchestration.json @@ -0,0 +1,26 @@ +{ + "orchestration_impl": { + "zip": { + "enable": true, + "implementationClass": "org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationTemplateZipHandler" + }, + "csar": { + "enable": true, + "implementationClass": "org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.OrchestrationTemplateCSARHandler" + } + }, + "process_impl": { + "zip" : { + "enzble": true, + "implementationClass" : "org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process.OrchestrationTemplateProcessZipHandler" + }, + "csar": { + "enable": true, + "implementationClass": "org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process.OrchestrationTemplateProcessCsarHandler" + } + }, + + "_config":{ + "namespace": "orchestration" + } +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/resources/orchestrationConfiguration.json b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/resources/orchestrationConfiguration.json new file mode 100644 index 0000000000..7509094b56 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/resources/orchestrationConfiguration.json @@ -0,0 +1,3 @@ +{ + "zip" :"org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.process.orchestrationTemplateProcessZipHandler" +}
\ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/ImagesTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/ImagesTest.java index afd797573a..5dcb7f9b62 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/ImagesTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/ImagesTest.java @@ -1,32 +1,70 @@ package org.openecomp.sdc.vendorsoftwareproduct; -import org.openecomp.core.utilities.CommonMethods; -import org.openecomp.core.utilities.json.JsonUtil; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.Spy; import org.openecomp.sdc.common.errors.CoreException; -import org.openecomp.sdc.common.errors.ErrorCode; -import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao; -import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDaoFactory; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; -import org.openecomp.sdc.vendorsoftwareproduct.errors.ImageErrorBuilder; -import org.openecomp.sdc.vendorsoftwareproduct.errors.NotSupportedHeatOnboardMethodErrorBuilder; import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes; -import org.openecomp.sdc.vendorsoftwareproduct.impl.VendorSoftwareProductManagerImpl; -import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse; -import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse; -import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Image; -import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.image.ImageDetails; +import org.openecomp.sdc.vendorsoftwareproduct.impl.ImageManagerImpl; +import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager; import org.openecomp.sdc.versioning.dao.types.Version; -import org.openecomp.sdc.versioning.errors.VersioningErrorCodes; import org.testng.Assert; -import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import java.util.Collection; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.verify; public class ImagesTest { + private static String VSP_ID = "VSP_ID"; + private static String COMP_ID = "COMP_ID"; + private static String ID = "ID"; + private static String USER = "USER"; + public static final Version VERSION01 = new Version(0, 1); + + @Mock + private VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao; + + @Mock + private CompositionEntityDataManager compositionEntityDataManager; + + @InjectMocks + @Spy + private ImageManagerImpl imageManager; + + @BeforeMethod + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + } + + @Test + public void createImage() + { + ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION01, COMP_ID, ID); + doReturn(true).when(vendorSoftwareProductInfoDao).isManual(anyObject(), anyObject()); + + imageManager.createImage(imageEntity, USER); + verify(compositionEntityDataManager).createImage(imageEntity); + } + + @Test + public void createImageHeat() + { + ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION01, COMP_ID, ID); + doReturn(false).when(vendorSoftwareProductInfoDao).isManual(anyObject(), anyObject()); + + try { + imageManager.createImage(imageEntity, USER); + Assert.fail(); + } catch (CoreException exception) { + Assert.assertEquals(exception.code().id(), VendorSoftwareProductErrorCodes.ADD_IMAGE_NOT_ALLOWED_IN_HEAT_ONBOARDING); + } + } /*private static final String USER1 = "imageTestUser1"; private static final String USER2 = "imageTestUser2"; private static final Version VERSION01 = new Version(0, 1); diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/QuestionnaireDataServiceTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/QuestionnaireDataServiceTest.java index 948d46ba10..3e42a23c6a 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/QuestionnaireDataServiceTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/QuestionnaireDataServiceTest.java @@ -48,7 +48,6 @@ import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.Com import org.openecomp.sdc.versioning.dao.types.Version; import org.testng.Assert; import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; import java.io.InputStream; import java.util.List; @@ -112,7 +111,7 @@ public class QuestionnaireDataServiceTest { public void testQuestionnaireDataAfterIllegalUpload() { InputStream zipInputStream = uploadFileTest.getZipInputStream("/missingYml"); UploadFileResponse uploadFileResponse = candidateManager - .upload(vspId, VERSION, zipInputStream, USER1); + .upload(vspId, VERSION, zipInputStream, USER1, "zip", "missingYml"); InformationArtifactData informationArtifactData = questionnaireDataService .generateQuestionnaireDataForInformationArtifact(vspId, vspActiveVersion); @@ -124,7 +123,7 @@ public class QuestionnaireDataServiceTest { InputStream zipInputStream = uploadFileTest.getZipInputStream(filePath); UploadFileResponse uploadFileResponse = candidateManager .upload(vspId, VERSION, - zipInputStream, USER1); + zipInputStream, USER1,"zip", "file"); candidateManager.process(vspId, VERSION, USER1); Assert.assertTrue(MapUtils.isEmpty( diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImplTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImplTest.java index d617bf9a47..741b1bf2ea 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImplTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImplTest.java @@ -37,9 +37,9 @@ import static org.mockito.Mockito.verify; public class ImageManagerImplTest { private static final String IMAGE_NOT_EXIST_MSG = - "Vendor Software Product Image with Id image1 does not exist for Vendor Software Product with" + - " " + - "id VSP_ID and version 0.1"; + "Vendor Software Product Image with Id image1 does not exist for Vendor Software Product with" + + " " + + "id VSP_ID and version 0.1"; private static final String USER = "imageTestUser"; private static final String VSP_ID = "VSP_ID"; @@ -66,7 +66,7 @@ public class ImageManagerImplTest { @Test public void testListWhenNone() { final Collection<ImageEntity> imageEntities = - imageManager.listImages(VSP_ID, VERSION, COMPONENT_ID, USER); + imageManager.listImages(VSP_ID, VERSION, COMPONENT_ID, USER); Assert.assertEquals(imageEntities.size(), 0); } @@ -74,17 +74,17 @@ public class ImageManagerImplTest { public void testList() { doReturn(Arrays.asList( - createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID), - createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE2_ID))) - .when(imageDao).list(anyObject()); + createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID), + createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE2_ID))) + .when(imageDao).list(anyObject()); final Collection<ImageEntity> images = - imageManager.listImages(VSP_ID, VERSION, COMPONENT_ID, USER); + imageManager.listImages(VSP_ID, VERSION, COMPONENT_ID, USER); Assert.assertEquals(images.size(), 2); for (ImageEntity image : images) { Assert.assertEquals(image.getImageCompositionData().getFileName(), - IMAGE1_ID.equals(image.getId()) ? IMAGE1_ID+"_name" : IMAGE2_ID+"_name" ); + IMAGE1_ID.equals(image.getId()) ? IMAGE1_ID+"_name" : IMAGE2_ID+"_name" ); } } @@ -92,7 +92,7 @@ public class ImageManagerImplTest { public void testCreateOnNotManualImage_negative() { testCreate_negative(new ImageEntity(VSP_ID, VERSION, COMPONENT_ID, null), USER, - VendorSoftwareProductErrorCodes.ADD_IMAGE_NOT_ALLOWED_IN_HEAT_ONBOARDING); + VendorSoftwareProductErrorCodes.ADD_IMAGE_NOT_ALLOWED_IN_HEAT_ONBOARDING); } @Test @@ -104,7 +104,7 @@ public class ImageManagerImplTest { verify(compositionEntityDataManagerMock).createImage(expected); } - @Test + /*@Test public void testCreateManualImageWithDuplicateName() { ImageEntity expected = createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID); doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject()); @@ -124,22 +124,22 @@ public class ImageManagerImplTest { Assert.assertEquals(VendorSoftwareProductErrorCodes.DUPLICATE_IMAGE_NAME_NOT_ALLOWED, ex.code().id()); } - } + }*/ @Test public void testUpdateNonExistingImageId_negative() { testUpdate_negative(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER, - VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND); + VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND); } @Test public void testUpdateImage() { doReturn(createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID)) - .when(imageDao).get(anyObject()); + .when(imageDao).get(anyObject()); doReturn(new CompositionEntityValidationData(CompositionEntityType.image, IMAGE1_ID)) - .when(compositionEntityDataManagerMock) - .validateEntity(anyObject(), anyObject(), anyObject()); + .when(compositionEntityDataManagerMock) + .validateEntity(anyObject(), anyObject(), anyObject()); ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID); Image imageData = new Image(); @@ -148,7 +148,7 @@ public class ImageManagerImplTest { imageEntity.setImageCompositionData(imageData); CompositionEntityValidationData validationData = - imageManager.updateImage(imageEntity, USER); + imageManager.updateImage(imageEntity, USER); Assert.assertTrue(validationData == null || validationData.getErrors() == null); verify(imageDao).update(imageEntity); } @@ -156,16 +156,16 @@ public class ImageManagerImplTest { @Test public void testIllegalImageUpdate() { doReturn(createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID)) - .when(imageDao).get(anyObject()); + .when(imageDao).get(anyObject()); doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject()); CompositionEntityValidationData toBeReturned = - new CompositionEntityValidationData(CompositionEntityType.image, IMAGE1_ID); + new CompositionEntityValidationData(CompositionEntityType.image, IMAGE1_ID); toBeReturned.setErrors(Arrays.asList("error1", "error2")); doReturn(toBeReturned) - .when(compositionEntityDataManagerMock) - .validateEntity(anyObject(), anyObject(), anyObject()); + .when(compositionEntityDataManagerMock) + .validateEntity(anyObject(), anyObject(), anyObject()); ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID); Image imageData = new Image(); @@ -183,7 +183,7 @@ public class ImageManagerImplTest { @Test public void testUpdateHEATImageFileName() throws Exception { doReturn(createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID)) - .when(imageDao).get(anyObject()); + .when(imageDao).get(anyObject()); ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID); Image imageData = new Image(); imageData.setFileName(IMAGE1_ID + " name updated"); @@ -202,7 +202,7 @@ public class ImageManagerImplTest { @Test public void testGetNonExistingImageId_negative() { testGet_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing image id", USER, - VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND); + VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND); } @Test @@ -213,12 +213,12 @@ public class ImageManagerImplTest { doReturn(compositionSchema).when(imageManager).getImageCompositionSchema(anyObject()); CompositionEntityResponse<Image> response = - imageManager.getImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER); + imageManager.getImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER); Assert.assertEquals(response.getId(), expected.getId()); Assert.assertEquals(response.getData().getFileName(), expected.getImageCompositionData(). - getFileName()); + getFileName()); Assert.assertEquals(response.getData().getDescription(), expected.getImageCompositionData(). - getDescription()); + getDescription()); Assert.assertEquals(response.getSchema(), compositionSchema); } @@ -227,13 +227,13 @@ public class ImageManagerImplTest { ImageEntity expected = createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID); doReturn(expected).when(imageDao).get(anyObject()); testDelete_negative(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER, - VendorSoftwareProductErrorCodes.DELETE_IMAGE_NOT_ALLOWED); + VendorSoftwareProductErrorCodes.DELETE_IMAGE_NOT_ALLOWED); } @Test public void testDeleteOnNotExistImage() { testDelete_negative(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER, - VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND); + VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND); } @Test @@ -255,7 +255,7 @@ public class ImageManagerImplTest { doReturn(schema).when(imageManager).getImageQuestionnaireSchema(anyObject()); QuestionnaireResponse questionnaire = - imageManager.getImageQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER); + imageManager.getImageQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, USER); Assert.assertNotNull(questionnaire); Assert.assertEquals(questionnaire.getData(), image.getQuestionnaireData()); Assert.assertEquals(questionnaire.getSchema(), schema); @@ -334,7 +334,7 @@ public class ImageManagerImplTest { String updJson = "{\"format\" :\"a22\"}"; try { imageManager.updateImageQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID, updJson, - USER); + USER); Assert.fail(); } catch(CoreException ex) { @@ -383,7 +383,7 @@ public class ImageManagerImplTest { } private void testUpdate_negative(String vspId, Version version, String componentId, String - imageId, String user, String expectedErrorCode) { + imageId, String user, String expectedErrorCode) { try { imageManager.updateImage(new ImageEntity(vspId, version, componentId, imageId), user); Assert.fail(); diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImplTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImplTest.java index e6d06f2e2c..252e152740 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImplTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImplTest.java @@ -6,6 +6,7 @@ import org.mockito.MockitoAnnotations; import org.openecomp.core.model.dao.ServiceModelDao; import org.openecomp.core.model.types.ServiceElement; import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; import org.openecomp.sdc.datatypes.error.ErrorLevel; import org.openecomp.sdc.healing.api.HealingManager; import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; @@ -23,7 +24,6 @@ import org.openecomp.sdc.vendorsoftwareproduct.utils.ZipFileUtils; import org.openecomp.sdc.versioning.dao.types.Version; import org.testng.Assert; import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; import java.io.IOException; import java.nio.ByteBuffer; @@ -90,7 +90,7 @@ public class OrchestrationTemplateCandidateManagerImplTest { doReturn("{}").when(candidateServiceMock).createManifest(anyObject(), anyObject()); doReturn(Optional.empty()).when(candidateServiceMock) - .fetchZipFileByteArrayInputStream(anyObject(), anyObject(), anyObject(), anyObject()); + .fetchZipFileByteArrayInputStream(anyObject(), anyObject(), anyObject(), OnboardingTypesEnum.ZIP, anyObject()); OrchestrationTemplateActionResponse response = @@ -123,7 +123,7 @@ public class OrchestrationTemplateCandidateManagerImplTest { UploadFileResponse uploadFileResponse = candidateManager .upload(VSP_ID, VERSION01, new ZipFileUtils().getZipInputStream("/legalUploadWithWarning"), - USER1); + USER1, "zip", "legalUploadWithWarning"); Assert.assertTrue(uploadFileResponse.getStatus() == UploadFileStatus.Success); Assert.assertTrue( uploadFileResponse.getErrors().get("uploadFile").get(0).getLevel() == ErrorLevel.WARNING); @@ -136,7 +136,7 @@ public class OrchestrationTemplateCandidateManagerImplTest { public void testUploadWithManifest() { UploadFileResponse uploadFileResponse = candidateManager .upload(VSP_ID, VERSION01, new ZipFileUtils().getZipInputStream("/legalUploadWithWarning"), - USER1); + USER1, "zip", "legalUploadWithWarning"); Assert.assertTrue(uploadFileResponse.getStatus() == UploadFileStatus.Success); Assert.assertTrue( uploadFileResponse.getErrors().get("uploadFile").get(0).getLevel() == ErrorLevel.WARNING); diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImplTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImplTest.java index 2fc4385563..e0e00f8d9d 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImplTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImplTest.java @@ -39,7 +39,6 @@ import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.common.errors.ErrorCategory; import org.openecomp.sdc.common.errors.ErrorCode; import org.openecomp.sdc.common.errors.Messages; -import org.openecomp.sdc.common.errors.ValidationErrorBuilder; import org.openecomp.sdc.healing.api.HealingManager; import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; import org.openecomp.sdc.tosca.datatypes.model.CapabilityDefinition; @@ -54,14 +53,10 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.PackageInfoDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.PackageInfo; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.UploadDataEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspQuestionnaireEntity; -import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes; import org.openecomp.sdc.vendorsoftwareproduct.impl.mock.EnrichmentManagerFactoryImpl; import org.openecomp.sdc.vendorsoftwareproduct.informationArtifact.InformationArtifactGenerator; import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager; @@ -92,7 +87,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; @@ -169,10 +163,10 @@ public class VendorSoftwareProductManagerImplTest { @Test public void testListWhenNone() { doReturn(new HashMap<>()).when(versioningManagerMock).listEntitiesVersionInfo - (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1, - VersionableEntityAction.Read); + (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1, + VersionableEntityAction.Read); List<VersionedVendorSoftwareProductInfo> vsps = - vendorSoftwareProductManager.listVsps(null, USER1); + vendorSoftwareProductManager.listVsps(null, USER1); Assert.assertEquals(vsps.size(), 0); } @@ -191,16 +185,16 @@ public class VendorSoftwareProductManagerImplTest { vspsTobeReturned.put(vsp2id, versionInfo2); doReturn(vspsTobeReturned).when(versioningManagerMock).listEntitiesVersionInfo - (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1, - VersionableEntityAction.Read); + (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1, + VersionableEntityAction.Read); VspDetails vsp1 = new VspDetails(vsp1id, VERSION01); vsp1.setWritetimeMicroSeconds(8L); doReturn(vsp1).when(vspInfoDaoMock) - .get(any(VspDetails.class)); + .get(any(VspDetails.class)); List<VersionedVendorSoftwareProductInfo> vsps = - vendorSoftwareProductManager.listVsps(null, USER1); + vendorSoftwareProductManager.listVsps(null, USER1); Assert.assertEquals(vsps.size(), 2); } @@ -219,11 +213,11 @@ public class VendorSoftwareProductManagerImplTest { vspsTobeReturned.put(vsp2id, versionInfo2); doReturn(vspsTobeReturned).when(versioningManagerMock).listEntitiesVersionInfo - (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1, - VersionableEntityAction.Read); + (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1, + VersionableEntityAction.Read); List<VersionedVendorSoftwareProductInfo> vsps = - vendorSoftwareProductManager.listVsps(VersionStatus.Final.name(), USER1); + vendorSoftwareProductManager.listVsps(VersionStatus.Final.name(), USER1); Assert.assertEquals(vsps.size(), 0); } @@ -243,27 +237,27 @@ public class VendorSoftwareProductManagerImplTest { vspsTobeReturned.put(vsp2id, versionInfo2); doReturn(vspsTobeReturned).when(versioningManagerMock).listEntitiesVersionInfo - (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1, - VersionableEntityAction.Read); + (VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, USER1, + VersionableEntityAction.Read); VspDetails vsp2 = new VspDetails(vsp2id, VERSION10); vsp2.setWritetimeMicroSeconds(8L); doReturn(vsp2).when(vspInfoDaoMock) - .get(any(VspDetails.class)); + .get(any(VspDetails.class)); List<VersionedVendorSoftwareProductInfo> vsps = - vendorSoftwareProductManager.listVsps(VersionStatus.Final.name(), USER1); + vendorSoftwareProductManager.listVsps(VersionStatus.Final.name(), USER1); Assert.assertEquals(vsps.size(), 1); } @Test(expectedExceptions = CoreException.class) public void testCreateWithExistingName_negative() { doThrow(new CoreException( - new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build())) - .when(vendorSoftwareProductManager).validateUniqueName("Vsp1"); + new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build())) + .when(vendorSoftwareProductManager).validateUniqueName("Vsp1"); VspDetails expectedVsp = - createVspDetails(null, null, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon", - "category", "subCategory", "123", null); + createVspDetails(null, null, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon", + "category", "subCategory", "123", null); vendorSoftwareProductManager.createVsp(expectedVsp, USER1); } @@ -274,11 +268,11 @@ public class VendorSoftwareProductManagerImplTest { doNothing().when(vendorSoftwareProductManager).createUniqueName("Vsp1"); doReturn(VERSION01).when(versioningManagerMock).create(anyObject(), anyObject(), anyObject()); doReturn("{}") - .when(vendorSoftwareProductManager).getVspQuestionnaireSchema(anyObject()); + .when(vendorSoftwareProductManager).getVspQuestionnaireSchema(anyObject()); VspDetails vspToCreate = - createVspDetails(null, null, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon", - "category", "subCategory", "123", null); + createVspDetails(null, null, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon", + "category", "subCategory", "123", null); VspDetails vsp = vendorSoftwareProductManager.createVsp(vspToCreate, USER1); @@ -297,21 +291,21 @@ public class VendorSoftwareProductManagerImplTest { VersionInfo versionInfo = new VersionInfo(); versionInfo.setActiveVersion(VERSION01); doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, - VersionableEntityAction.Write); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, + VersionableEntityAction.Write); VspDetails existingVsp = - createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-existingVsp", "vendorName", "vlm1Id", - "icon", "category", "subCategory", "123", null); + createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-existingVsp", "vendorName", "vlm1Id", + "icon", "category", "subCategory", "123", null); VspDetails updatedVsp = - createVspDetails(VSP_ID, VERSION01, "Vsp1_updated", "Test-existingVsp", "vendorName", - "vlm1Id", "icon", "category", "subCategory", "123", null); + createVspDetails(VSP_ID, VERSION01, "Vsp1_updated", "Test-existingVsp", "vendorName", + "vlm1Id", "icon", "category", "subCategory", "123", null); doReturn(existingVsp).when(vspInfoDaoMock) - .get(any(VspDetails.class)); + .get(any(VspDetails.class)); doThrow(new CoreException( - new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build())) - .when(vendorSoftwareProductManager) - .updateUniqueName(existingVsp.getName(), updatedVsp.getName()); + new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).build())) + .when(vendorSoftwareProductManager) + .updateUniqueName(existingVsp.getName(), updatedVsp.getName()); vendorSoftwareProductManager.updateVsp(updatedVsp, USER1); } @@ -321,21 +315,21 @@ public class VendorSoftwareProductManagerImplTest { VersionInfo versionInfo = new VersionInfo(); versionInfo.setActiveVersion(VERSION01); doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, - VersionableEntityAction.Write); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, + VersionableEntityAction.Write); VspDetails existingVsp = - createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon", - "category", - "subCategory", "456", null); + createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon", + "category", + "subCategory", "456", null); VspDetails updatedVsp = - createVspDetails(VSP_ID, VERSION01, "VSP1_updated", null, "vendorName", "vlm1Id", "icon", - "category_updated", - "subCategory", "456", null); + createVspDetails(VSP_ID, VERSION01, "VSP1_updated", null, "vendorName", "vlm1Id", "icon", + "category_updated", + "subCategory", "456", null); existingVsp.setWritetimeMicroSeconds(8L); doReturn(existingVsp).when(vspInfoDaoMock) - .get(any(VspDetails.class)); + .get(any(VspDetails.class)); doNothing().when(vendorSoftwareProductManager) - .updateUniqueName(existingVsp.getName(), updatedVsp.getName()); + .updateUniqueName(existingVsp.getName(), updatedVsp.getName()); vendorSoftwareProductManager.updateVsp(updatedVsp, USER1); @@ -347,26 +341,26 @@ public class VendorSoftwareProductManagerImplTest { VersionInfo versionInfo = new VersionInfo(); versionInfo.setActiveVersion(VERSION01); doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, - VersionableEntityAction.Write); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, + VersionableEntityAction.Write); List<String> fgs = new ArrayList<String>(); fgs.add("fg1"); fgs.add("fg2"); VspDetails existingVsp = - createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon", - "category", - "subCategory", "456", fgs); + createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon", + "category", + "subCategory", "456", fgs); List<String> updFgs = new ArrayList<String>(); updFgs.add("fg2"); VspDetails updatedVsp = - createVspDetails(VSP_ID, VERSION01, "VSP1_updated", null, "vendorName", "vlm1Id", "icon", - "category_updated", - "subCategory", "456", updFgs); + createVspDetails(VSP_ID, VERSION01, "VSP1_updated", null, "vendorName", "vlm1Id", "icon", + "category_updated", + "subCategory", "456", updFgs); existingVsp.setWritetimeMicroSeconds(8L); doReturn(existingVsp).when(vspInfoDaoMock) - .get(any(VspDetails.class)); + .get(any(VspDetails.class)); doNothing().when(vendorSoftwareProductManager) - .updateUniqueName(existingVsp.getName(), updatedVsp.getName()); + .updateUniqueName(existingVsp.getName(), updatedVsp.getName()); DeploymentFlavorEntity dfEntity = new DeploymentFlavorEntity(VSP_ID,VERSION01,"DF_ID"); DeploymentFlavor flavor = new DeploymentFlavor(); @@ -400,18 +394,18 @@ public class VendorSoftwareProductManagerImplTest { versionInfo.setStatus(VersionStatus.Locked); versionInfo.setLockingUser(USER1); doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, - VersionableEntityAction.Read); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, + VersionableEntityAction.Read); VspDetails existingVsp = - createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon", - "category", - "subCategory", "456", null); + createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon", + "category", + "subCategory", "456", null); existingVsp.setWritetimeMicroSeconds(8L); doReturn(existingVsp).when(vspInfoDaoMock).get(any(VspDetails.class)); VspDetails actualVsp = - vendorSoftwareProductManager.getVsp(VSP_ID, VERSION01, USER1); + vendorSoftwareProductManager.getVsp(VSP_ID, VERSION01, USER1); assertVspsEquals(actualVsp, existingVsp); } @@ -424,37 +418,37 @@ public class VendorSoftwareProductManagerImplTest { versionInfo.setStatus(VersionStatus.Locked); versionInfo.setLockingUser(USER2); doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, - VersionableEntityAction.Read); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, + VersionableEntityAction.Read); VspDetails existingVsp = - createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon", - "category", - "subCategory", "456", null); + createVspDetails(VSP_ID, VERSION01, "VSP1", null, "vendorName", "vlm1Id", "icon", + "category", + "subCategory", "456", null); existingVsp.setWritetimeMicroSeconds(8L); doReturn(existingVsp) - .when(vspInfoDaoMock).get(any(VspDetails.class)); + .when(vspInfoDaoMock).get(any(VspDetails.class)); VspDetails actualVsp = - vendorSoftwareProductManager.getVsp(VSP_ID, VERSION01, USER1); + vendorSoftwareProductManager.getVsp(VSP_ID, VERSION01, USER1); VspDetails expectedVsp = - vspInfoDaoMock - .get(new VspDetails(VSP_ID, VERSION01)); + vspInfoDaoMock + .get(new VspDetails(VSP_ID, VERSION01)); assertVspsEquals(actualVsp, expectedVsp); } @Test public void testCheckin() { doReturn(VERSION01).when(versioningManagerMock) - .checkin(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, - USER1, null); + .checkin(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, + USER1, null); Version version = vendorSoftwareProductManager.checkin(VSP_ID, USER1); Assert.assertEquals(version, VERSION01); verify(versioningManagerMock) - .checkin(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, - USER1, null); + .checkin(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, + USER1, null); verify(activityLogManagerMock).addActionLog(activityLogEntityArg.capture(), eq(USER1)); ActivityLogEntity activityLogEntity = activityLogEntityArg.getValue(); Assert.assertEquals(activityLogEntity.getVersionId(), String.valueOf(VERSION01.getMajor() + 1)); @@ -464,14 +458,14 @@ public class VendorSoftwareProductManagerImplTest { @Test public void testCheckout() { doReturn(VERSION01).when(versioningManagerMock) - .checkout(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, - USER1); + .checkout(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, + USER1); Version version = vendorSoftwareProductManager.checkout(VSP_ID, USER1); Assert.assertEquals(version, VERSION01); verify(versioningManagerMock) - .checkout(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, - USER1); + .checkout(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, + USER1); verify(activityLogManagerMock).addActionLog(activityLogEntityArg.capture(), eq(USER1)); ActivityLogEntity activityLogEntity = activityLogEntityArg.getValue(); @@ -486,11 +480,11 @@ public class VendorSoftwareProductManagerImplTest { VersionInfo versionInfo = new VersionInfo(); versionInfo.setActiveVersion(existingVersion); doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, - VSP_ID, USER1, VersionableEntityAction.Read); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, + VSP_ID, USER1, VersionableEntityAction.Read); doReturn(VERSION01).when(versioningManagerMock).undoCheckout(VendorSoftwareProductConstants - .VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1); + .VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1); VspDetails vsp = new VspDetails(VSP_ID, existingVersion); vsp.setName("ExistingName"); @@ -552,22 +546,22 @@ public class VendorSoftwareProductManagerImplTest { VersionInfo versionInfo = new VersionInfo(); versionInfo.setActiveVersion(VERSION01); doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, - VSP_ID, USER1, VersionableEntityAction.Read); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, + VSP_ID, USER1, VersionableEntityAction.Read); VspDetails vsp = - createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon", - "category", "subCategory", "licenseAgreementId", - Collections.singletonList("featureGroupId")); + createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon", + "category", "subCategory", "licenseAgreementId", + Collections.singletonList("featureGroupId")); doReturn(vsp).when(vspInfoDaoMock).get(anyObject()); UploadDataEntity uploadData = new UploadDataEntity(VSP_ID, VERSION01); uploadData.setContentData( - ByteBuffer.wrap(FileUtils.toByteArray(getFileInputStream("/emptyComposition")))); + ByteBuffer.wrap(FileUtils.toByteArray(getFileInputStream("/emptyComposition")))); doReturn(uploadData).when(orchestrationTemplateDataDaoMock) - .getOrchestrationTemplate(anyObject(), anyObject()); + .getOrchestrationTemplate(anyObject(), anyObject()); doReturn(new ToscaServiceModel(new FileContentHandler(), new HashMap<>(), - "MainServiceTemplate.yaml")) - .when(serviceModelDaoMock).getServiceModel(VSP_ID, VERSION01); + "MainServiceTemplate.yaml")) + .when(serviceModelDaoMock).getServiceModel(VSP_ID, VERSION01); ValidationResponse validationResponse = vendorSoftwareProductManager.submit(VSP_ID, USER1); Assert.assertNotNull(validationResponse); @@ -576,8 +570,8 @@ public class VendorSoftwareProductManagerImplTest { Assert.assertEquals(validationResponse.getLicensingDataErrors(), 1); verify(versioningManagerMock, never()) - .submit(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, - USER1, null); + .submit(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, + USER1, null); //TODO - check.. verify(activityLogManagerMock, never()).addActionLog(any(ActivityLogEntity.class), eq(USER1)); @@ -590,20 +584,20 @@ public class VendorSoftwareProductManagerImplTest { EnrichmentManagerFactory.getInstance(); AbstractFactoryBase - .registerFactory(EnrichmentManagerFactory.class, EnrichmentManagerFactoryImpl.class); + .registerFactory(EnrichmentManagerFactory.class, EnrichmentManagerFactoryImpl.class); VspDetails vsp = - createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon", - "category", "subCategory", "123", Collections.singletonList("fg1")); + createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon", + "category", "subCategory", "123", Collections.singletonList("fg1")); doReturn(vsp).when(vspInfoDaoMock).get(anyObject()); UploadDataEntity uploadData = new UploadDataEntity(VSP_ID, VERSION01); uploadData.setContentData( - ByteBuffer.wrap(FileUtils.toByteArray(getFileInputStream("/emptyComposition")))); + ByteBuffer.wrap(FileUtils.toByteArray(getFileInputStream("/emptyComposition")))); doReturn(uploadData).when(orchestrationTemplateDataDaoMock) - .getOrchestrationTemplate(anyObject(), anyObject()); + .getOrchestrationTemplate(anyObject(), anyObject()); doReturn(new ToscaServiceModel(new FileContentHandler(), new HashMap<>(), - "MainServiceTemplate.yaml")) - .when(serviceModelDaoMock).getServiceModel(VSP_ID, VERSION01); + "MainServiceTemplate.yaml")) + .when(serviceModelDaoMock).getServiceModel(VSP_ID, VERSION01); ValidationResponse validationResponse = vendorSoftwareProductManager.submit(VSP_ID, USER1); Assert.assertTrue(validationResponse.isValid()); @@ -613,8 +607,8 @@ public class VendorSoftwareProductManagerImplTest { Assert.assertNull(vsp2.getVersionInfo().getLockingUser());*/ verify(versioningManagerMock) - .submit(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, - USER1, null); + .submit(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, + USER1, null); verify(activityLogManagerMock).addActionLog(activityLogEntityArg.capture(), eq(USER1)); ActivityLogEntity activityLogEntity = activityLogEntityArg.getValue(); Assert.assertEquals(activityLogEntity.getVersionId(), String.valueOf(VERSION10.getMajor())); @@ -633,11 +627,11 @@ public class VendorSoftwareProductManagerImplTest { VersionInfo versionInfo = new VersionInfo(); versionInfo.setActiveVersion(VERSION10); doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, - VersionableEntityAction.Read); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, + VersionableEntityAction.Read); doReturn(new ToscaServiceModel(new FileContentHandler(), new HashMap<>(), "")).when - (enrichedServiceModelDaoMock).getServiceModel(VSP_ID, VERSION10); + (enrichedServiceModelDaoMock).getServiceModel(VSP_ID, VERSION10); VspDetails vsp = new VspDetails(VSP_ID, VERSION10); vsp.setVendorId("vendorId"); @@ -646,8 +640,8 @@ public class VendorSoftwareProductManagerImplTest { doReturn(vsp).when(vspInfoDaoMock).get(any(VspDetails.class)); doReturn(new FileContentHandler()).when(licenseArtifactsServiceMock) - .createLicenseArtifacts(VSP_ID, vsp.getVendorId(), VERSION10, vsp.getFeatureGroups(), - USER1); + .createLicenseArtifacts(VSP_ID, vsp.getVendorId(), VERSION10, vsp.getFeatureGroups(), + USER1); PackageInfo packageInfo = vendorSoftwareProductManager.createPackage(VSP_ID, VERSION10, USER1); Assert.assertNotNull(packageInfo.getVspId()); @@ -659,7 +653,7 @@ public class VendorSoftwareProductManagerImplTest { InputStream zis = getFileInputStream("/vspmanager/zips/missingYml.zip"); UploadFileResponse uploadFileResponse = - candidateManager.upload(VSP_ID, VERSION01, zis, USER1); + candidateManager.upload(VSP_ID, VERSION01, zis, USER1, "zip", "missingYml"); Assert.assertEquals(uploadFileResponse.getErrors().size(), 0); } @@ -671,8 +665,8 @@ public class VendorSoftwareProductManagerImplTest { try { candidateManager - .upload(VSP_ID, VERSION01, - url.openStream(), USER1); + .upload(VSP_ID, VERSION01, + url.openStream(), USER1, "zip", "notZipFile"); candidateManager.process(VSP_ID, VERSION01, USER1); } catch (Exception ce) { Assert.assertEquals(ce.getMessage(), Messages.CREATE_MANIFEST_FROM_ZIP.getErrorMessage()); @@ -680,118 +674,18 @@ public class VendorSoftwareProductManagerImplTest { verify(activityLogManagerMock, never()).addActionLog(any(ActivityLogEntity.class), eq(USER1)); } -/* - @Test - public void testEnrichModelInSubmit() { - UniqueValueUtil - .deleteUniqueValue(VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME, - "VSP_syb"); - VspDetails vspDetails = vendorSoftwareProductManager.createVsp( - createVspDetails(null, null, "VSP_syb", "Test-vsp_syb", "vendorName", "vlm1Id", "icon", - "category", "subCategory", "456", null), USER1); - String id = vspDetails.getId(); - - //upload file - InputStream zis = getFileInputStream("/vspmanager/zips/fullComposition.zip"); - candidateManager.upload(id, VERSION01, zis, USER1); - OrchestrationTemplateActionResponse uploadFileResponse = - candidateManager.process(id, VERSION01, USER1); - - //check in - vendorSoftwareProductManager.checkin(id, USER1); - //submit - try { - ValidationResponse result = vendorSoftwareProductManager.submit(id, USER1); - } catch (IOException exception) { - Assert.fail(); - } - VersionedVendorSoftwareProductInfo details = - vendorSoftwareProductManager.getVsp(id, null, USER1); - Collection<ComponentEntity> components =vendorSoftwareProductManager - .listComponents(id, details.getVersionInfo().getActiveVersion(), USER1); - - ToscaServiceModel model = - (ToscaServiceModel) EnrichedServiceModelDaoFactory.getInstance().createInterface() - .getServiceModel(id, details.getVersionInfo().getActiveVersion()); - - Map<String, CapabilityDefinition> capabilities = new HashMap<>(); - for (ComponentEntity component : components) { - model.getServiceTemplates(). - entrySet(). - stream(). - filter(entryValue -> entryValue.getValue() != null && - entryValue.getValue().getNode_types() != null && - entryValue.getValue(). - getNode_types(). - containsKey(component.getComponentCompositionData().getName())). - forEach(entryValue -> entryValue.getValue().getNode_types(). - values(). - stream(). - filter(type -> MapUtils.isNotEmpty(type.getCapabilities())). - forEach(type -> type.getCapabilities(). - entrySet(). - forEach(entry -> addCapability(entryValue.getKey(), capabilities, entry.getKey(), - entry.getValue())))); - - } - - Assert.assertNotNull(capabilities); - } - - @Test(dependsOnMethods = {"testCreatePackage"}) - public void testEnrichedFilesDeletedOnNewUpload() throws IOException { - Version activeVersion; - - createPackageFromUpload(VSP_ID, USER1, "/fullComposition"); - activeVersion = vendorSoftwareProductManager.getVsp(VSP_ID, null, USER1).getVersionInfo() - .getActiveVersion(); - - List<ServiceArtifact> firstExternalArtifacts = enrichedServiceModelDaoMock - .getExternalArtifacts(VSP_ID, activeVersion); - ToscaServiceModel firstServiceModel = enrichedServiceModelDaoMock.getServiceModel(VSP_ID, - activeVersion); - - createPackageFromUpload(VSP_ID, USER1, "/emptyComposition"); - activeVersion = vendorSoftwareProductManager.getVsp(VSP_ID, null, USER1).getVersionInfo() - .getActiveVersion(); - - List<ServiceArtifact> secondExternalArtifacts = enrichedServiceModelDaoMock - .getExternalArtifacts(VSP_ID, activeVersion); - ToscaServiceModel secondServiceModel = enrichedServiceModelDaoMock.getServiceModel(VSP_ID, - activeVersion); - - Assert.assertNotEquals(firstExternalArtifacts, secondExternalArtifacts); - Assert.assertNotEquals(firstServiceModel, secondServiceModel); - - } - - @Test(dependsOnMethods = {"testMibsDeletedInCsar"}) - public void testServiceTemplatesAreDeletedInCsarOnNewUpload() throws IOException { - String nestedPath = "Definitions" + File.separator + "nested"; - - uploadFileAndProcess(VSP_ID, USER1, "/vspmanager/zips/fullCompositionNested.zip"); - checkinSubmitCreatePackage(VSP_ID, USER1); - List<String> nestedFileNamesServiceTemplates = - getWantedFileNamesFromCsar(nestedPath); - uploadFileAndProcess(VSP_ID, USER1, "/vspmanager/zips/fullComposition.zip"); - checkinSubmitCreatePackage(VSP_ID, USER1); - List<String> emptyNestedNamesList = getWantedFileNamesFromCsar(nestedPath); - - Assert.assertEquals(emptyNestedNamesList.size(), 0); - Assert.assertNotEquals(emptyNestedNamesList.size(), nestedFileNamesServiceTemplates.size()); - }*/ private List<String> getWantedFileNamesFromCsar(String pathInCsar) - throws IOException { + throws IOException { File translatedFile = vendorSoftwareProductManager.getTranslatedFile(VSP_ID, VERSION10, USER1); return getFileNamesFromFolderInCsar(translatedFile, - pathInCsar); + pathInCsar); } private List<String> getFileNamesFromFolderInCsar(File csar, String folderName) - throws IOException { + throws IOException { List<String> fileNames = new ArrayList<>(); ZipInputStream zip = new ZipInputStream(new FileInputStream(csar)); @@ -806,31 +700,16 @@ public class VendorSoftwareProductManagerImplTest { return fileNames; } - /* - //Disabled for sonar null pointer issue for componentEntities - private Pair<String, String> uploadMib(String vspId, String user, String filePath, - String fileName) { - List<ComponentEntity> componentEntities = null; - //(List<ComponentEntity>) vendorSoftwareProductManager.listComponents(vspId, null, user); - monitoringUploadsManager.upload(getFileInputStream(filePath), - fileName, vspId, - VERSION01, componentEntities.get(0).getId(), MonitoringUploadType.SNMP_POLL, user); - //TODO: add validate of addActionLog() func call - - return new ImmutablePair<>(componentEntities.get(0).getId(), - componentEntities.get(0).getComponentCompositionData() - .getDisplayName()); - }*/ private void createPackageFromUpload(String vspId, String user, String filePath) - throws IOException { + throws IOException { uploadFileAndProcess(vspId, user, filePath); checkinSubmitCreatePackage(vspId, user); } private void uploadFileAndProcess(String vspId, String user, String filePath) { vendorSoftwareProductManager.checkout(vspId, user); - candidateManager.upload(vspId, VERSION01, getFileInputStream(filePath), user); + candidateManager.upload(vspId, VERSION01, getFileInputStream(filePath), user, "zip", "file"); candidateManager.process(vspId, VERSION01, user); } @@ -888,11 +767,11 @@ public class VendorSoftwareProductManagerImplTest { */ private void testLegalUpload(String vspId, Version version, InputStream upload, String user) { - candidateManager.upload(vspId, VERSION01, upload, USER1); + candidateManager.upload(vspId, VERSION01, upload, USER1, "zip", "file"); candidateManager.process(vspId, VERSION01, user); UploadDataEntity uploadData = - orchestrationTemplateDataDaoMock.getOrchestrationTemplate(vspId, version); + orchestrationTemplateDataDaoMock.getOrchestrationTemplate(vspId, version); Assert.assertNotNull(uploadData); } @@ -914,28 +793,11 @@ public class VendorSoftwareProductManagerImplTest { private void assertVSPInWantedLocationInVSPList(String vspId, int location, String user) { List<VersionedVendorSoftwareProductInfo> vspList = - vendorSoftwareProductManager.listVsps(null, user); + vendorSoftwareProductManager.listVsps(null, user); Assert.assertEquals(vspList.get(location).getVspDetails().getId(), vspId); } - // private void assertInfoArtifactIsInRightPathInCsar(String vspId, String zipFileName) -// throws IOException { -// ZipInputStream inputZipStream = new ZipInputStream(new FileInputStream(new File(zipFileName))); -// boolean isInfoArtifactInZip = false; -// -// ZipEntry zipEntry; -// while ((zipEntry = inputZipStream.getNextEntry()) != null) { -// String currentEntryName = zipEntry.getName(); -// if(currentEntryName.equals("Artifacts\\Informative\\Guide\\VSP_" + -// vspId + "_Information.txt")){ -// isInfoArtifactInZip = true; -// break; -// } -// } -// -// Assert.assertTrue(isInfoArtifactInZip); -// } static VspDetails createVspDetails(String id, Version version, String name, String desc, String vendorName, String vlm, String icon, String category, String subCategory, @@ -969,68 +831,30 @@ public class VendorSoftwareProductManagerImplTest { Assert.assertEquals(actual.getFeatureGroups(), expected.getFeatureGroups()); } - -// @Test -// public void testDownloadFile() throws IOException { -// VspDetails expectedVsp = VSPCommon.createVspDetails(null, null, String.format("VSP-test-%s", vlm1Id), "Test-vsp", "vendorName", "vlm1Id", "icon", "category", "subCategory", "123", null); -// VspDetails createdVsp = vendorSoftwareProductManager.createVsp(expectedVsp, USER1); -// -// id005 = createdVsp.getId(); -// Assert.assertNotNull(id005); -// Assert.assertNotNull(createdVsp.getVersion()); -// -// try (InputStream zipInputStream = new ZipFileUtils().getZipInputStream("/legalUploadWithWarning")) { -// -// UploadFileResponse uploadFileResponse = vendorSoftwareProductManager.upload(id005, zipInputStream, USER1); -// vendorSoftwareProductManager.process(id005, USER1); -// Optional<File> fileCandidate = vendorSoftwareProductManager.get(id005, USER1); -// -// File latestHeatPackage = fileCandidate.get(); -// -// zipInputStream.reset(); -// byte[] uploaded = IOUtils.toByteArray(zipInputStream); -// -// Optional<FileContentHandler> zipContentMap = vendorSoftwareProductManager.getZipContentMap(uploadFileResponse, uploaded); -// FileContentHandler fileContentHandler = new FileContentHandler(); -// if(zipContentMap.isPresent()){ -// fileContentHandler = zipContentMap.get(); -// } -// -// uploaded = IOUtils.toByteArray(fileContentHandler.getFiles().values()); -// -// byte[] downloaded; -// try (BufferedInputStream fileStream = new BufferedInputStream(new FileInputStream(latestHeatPackage))) { -// downloaded = IOUtils.toByteArray(fileStream); -// } -// -// Assert.assertTrue(Arrays.equals(uploaded, downloaded)); -// } -// } - - // todo ********************** move to common ************************************** + // todo ********************** move to common ************************************** private void mockVersioning(VersionableEntityAction action) { VersionInfo versionInfo = new VersionInfo(); versionInfo.setActiveVersion(VERSION01); doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, - action); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1, + action); } private void mockVersioningEntityNotExist(VersionableEntityAction action, String vspId) { doThrow(new CoreException(new EntityNotExistErrorBuilder( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, vspId).build())) - .when(versioningManagerMock).getEntityVersionInfo( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, vspId, USER1, - action); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, vspId).build())) + .when(versioningManagerMock).getEntityVersionInfo( + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, vspId, USER1, + action); } private void MockVersioningEntityLocked(VersionableEntityAction action) { doThrow(new CoreException(new EditOnEntityLockedByOtherErrorBuilder( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1) - .build())) - .when(versioningManagerMock).getEntityVersionInfo( - VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER2, - action); + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1) + .build())) + .when(versioningManagerMock).getEntityVersionInfo( + VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER2, + action); } }
\ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/tree/UploadFileTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/tree/UploadFileTest.java index 236b7e7594..dfb7409bd0 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/tree/UploadFileTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/tree/UploadFileTest.java @@ -27,6 +27,7 @@ import org.mockito.MockitoAnnotations; import org.mockito.Spy; import org.openecomp.core.model.dao.ServiceModelDao; import org.openecomp.core.model.types.ServiceElement; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; import org.openecomp.sdc.healing.api.HealingManager; import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao; @@ -37,92 +38,86 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; import org.openecomp.sdc.vendorsoftwareproduct.impl.OrchestrationTemplateCandidateManagerImpl; import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionDataExtractor; import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager; -import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService; import org.openecomp.sdc.vendorsoftwareproduct.services.impl.filedatastructuremodule.CandidateServiceImpl; +import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse; import org.openecomp.sdc.vendorsoftwareproduct.utils.VSPCommon; import org.openecomp.sdc.versioning.dao.types.Version; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.net.URL; import java.util.zip.ZipOutputStream; import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; +import static org.testng.Assert.assertEquals; public class UploadFileTest { - private static final String USER1 = "vspTestUser1"; - - public static final Version VERSION01 = new Version(0, 1); - @Mock - private VendorSoftwareProductDao vendorSoftwareProductDaoMock; - @Mock - private OrchestrationTemplateDao orchestrationTemplateDataDaoMock; - @Spy - private CandidateServiceImpl candidateService; - @Mock - private HealingManager healingManagerMock; - @Mock - private CompositionDataExtractor compositionDataExtractorMock; - @Mock - private ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDaoMock; - @Mock - private CompositionEntityDataManager compositionEntityDataManagerMock; - @Mock - private VendorSoftwareProductInfoDao vspInfoDaoMock; - - @InjectMocks - private OrchestrationTemplateCandidateManagerImpl candidateManager; - - private static String vlm1Id; - public static String id001 = null; - public static String id002 = null; - - public static Version activeVersion002 = null; - - - @BeforeMethod - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - } - - @Test - public void testUploadFile() { - VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0)); - doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class)); - candidateManager.upload(id001, activeVersion002, getZipInputStream("/legalUpload"), USER1); - } - - - private void testLegalUpload(String vspId, Version version, InputStream upload, String user) { - candidateManager.upload(vspId, activeVersion002, upload, user); - - UploadDataEntity uploadData = - orchestrationTemplateDataDaoMock.getOrchestrationTemplate(vspId, version); - - } - - public InputStream getZipInputStream(String name) { - URL url = this.getClass().getResource(name); - File templateDir = new File(url.getFile()); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ZipOutputStream zos = new ZipOutputStream(baos); - - VSPCommon.zipDir(templateDir, "", zos, true); - try { - zos.close(); - } catch (IOException e) { - e.printStackTrace(); + private static final String USER1 = "vspTestUser1"; + + public static final Version VERSION01 = new Version(0, 1); + @Mock + private VendorSoftwareProductDao vendorSoftwareProductDaoMock; + @Mock + private OrchestrationTemplateDao orchestrationTemplateDataDaoMock; + @Spy + private CandidateServiceImpl candidateService; + @Mock + private HealingManager healingManagerMock; + @Mock + private CompositionDataExtractor compositionDataExtractorMock; + @Mock + private ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDaoMock; + @Mock + private CompositionEntityDataManager compositionEntityDataManagerMock; + @Mock + private VendorSoftwareProductInfoDao vspInfoDaoMock; + + @InjectMocks + private OrchestrationTemplateCandidateManagerImpl candidateManager; + + private static String vlm1Id; + public static String id001 = null; + public static String id002 = null; + + public static Version activeVersion002 = null; + + + @BeforeMethod + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + } + + @Test + public void testUploadFile() { + VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0)); + doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class)); + candidateManager.upload(id001, activeVersion002, getZipInputStream("/legalUpload"), USER1, OnboardingTypesEnum.ZIP.toString(), "legalUpload"); + } + + + private void testLegalUpload(String vspId, Version version, InputStream upload, String user) { + UploadFileResponse uploadFileResponse = candidateManager.upload(vspId, activeVersion002, + upload, user, OnboardingTypesEnum.ZIP.toString(),"file" ); + assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.ZIP); + UploadDataEntity uploadData = + orchestrationTemplateDataDaoMock.getOrchestrationTemplate(vspId, version); + + } + + public InputStream getZipInputStream(String name) { + URL url = this.getClass().getResource(name); + File templateDir = new File(url.getFile()); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (ZipOutputStream zos = new ZipOutputStream(baos)) { + VSPCommon.zipDir(templateDir, "", zos, true); + } catch (IOException e) { + e.printStackTrace(); + } + return new ByteArrayInputStream(baos.toByteArray()); } - return new ByteArrayInputStream(baos.toByteArray()); - } } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/ManifestParsingTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/ManifestParsingTest.java new file mode 100644 index 0000000000..3332e81e36 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/ManifestParsingTest.java @@ -0,0 +1,58 @@ +package org.openecomp.sdc.vendorsoftwareproduct.upload.csar; + +import org.junit.Test; +import org.openecomp.sdc.common.errors.Messages; +import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.OnboardingManifest; + +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.Assert.*; + +public class ManifestParsingTest { + + @Test + public void testSuccessfulParsing() throws IOException { + try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/manifest/ValidTosca.mf")) { + OnboardingManifest onboardingManifest = new OnboardingManifest(is); + assertTrue(onboardingManifest.isValid()); + assertEquals(onboardingManifest.getMetadata().size(), 4); + assertEquals(onboardingManifest.getSources().size(), 5); + } + } + + @Test + public void testNoMetadataParsing() throws IOException { + try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/manifest/InvalidTosca1.mf")) { + OnboardingManifest onboardingManifest = new OnboardingManifest(is); + assertFalse(onboardingManifest.isValid()); + assertTrue(onboardingManifest.getErrors().stream(). + filter(error -> error.contains(Messages.MANIFEST_INVALID_LINE.getErrorMessage().substring(0, 10))) + .findAny().isPresent()); + } + } + + @Test + public void testBrokenMDParsing() throws IOException { + try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/manifest/InvalidTosca2.mf")) { + OnboardingManifest onboardingManifest = new OnboardingManifest(is); + assertFalse(onboardingManifest.isValid()); + assertTrue(onboardingManifest.getErrors().stream(). + filter(error -> error.contains(Messages.MANIFEST_INVALID_LINE.getErrorMessage().substring(0, 10))) + .findAny().isPresent()); + } + } + + @Test + public void testNoMetaParsing() throws IOException { + try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/manifest/InvalidTosca4.mf")) { + OnboardingManifest onboardingManifest = new OnboardingManifest(is); + assertFalse(onboardingManifest.isValid()); + assertTrue(onboardingManifest.getErrors().stream(). + filter(error -> error.contains(Messages.MANIFEST_NO_METADATA.getErrorMessage().substring(0, 10))) + .findAny().isPresent()); + } + } + + +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/UploadCSARFileTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/UploadCSARFileTest.java new file mode 100644 index 0000000000..a7fc0e1ba0 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/UploadCSARFileTest.java @@ -0,0 +1,221 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.vendorsoftwareproduct.upload.csar; + + +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.Spy; +import org.openecomp.core.model.dao.ServiceModelDao; +import org.openecomp.core.model.types.ServiceElement; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; +import org.openecomp.sdc.common.errors.Messages; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.healing.api.HealingManager; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; +import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateCandidateDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; +import org.openecomp.sdc.vendorsoftwareproduct.impl.OrchestrationTemplateCandidateManagerImpl; +import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionDataExtractor; +import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager; +import org.openecomp.sdc.vendorsoftwareproduct.services.impl.filedatastructuremodule.CandidateServiceImpl; +import org.openecomp.sdc.vendorsoftwareproduct.services.impl.filedatastructuremodule.ManifestCreatorNamingConventionImpl; +import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse; +import org.openecomp.sdc.versioning.dao.types.Version; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.util.List; +import java.util.function.Predicate; + +import static org.junit.Assert.*; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.doReturn; + +public class UploadCSARFileTest { + private static final String USER1 = "vspTestUser1"; + + public static final Version VERSION01 = new Version(0, 1); + + @Mock + private VendorSoftwareProductDao vendorSoftwareProductDaoMock; + @Mock + private OrchestrationTemplateDao orchestrationTemplateDataDaoMock; + + @Spy + private CandidateServiceImpl candidateService; + @Mock + private HealingManager healingManagerMock; + @Mock + private CompositionDataExtractor compositionDataExtractorMock; + @Mock + private ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDaoMock; + @Mock + private CompositionEntityDataManager compositionEntityDataManagerMock; + @Mock + private VendorSoftwareProductInfoDao vspInfoDaoMock; + @Mock + private OrchestrationTemplateCandidateDao orchestrationTemplateCandidateDao; + @Mock + private ManifestCreatorNamingConventionImpl manifestCreator; + + private OrchestrationTemplateCandidateManagerImpl candidateManager; + + + public static String id001 = null; + + public static Version activeVersion002 = null; + + + @BeforeMethod + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + candidateService = new CandidateServiceImpl(manifestCreator,orchestrationTemplateCandidateDao); + candidateManager = new OrchestrationTemplateCandidateManagerImpl( vendorSoftwareProductDaoMock, + vspInfoDaoMock, + orchestrationTemplateDataDaoMock, + candidateService, healingManagerMock, + compositionDataExtractorMock, + serviceModelDaoMock, + compositionEntityDataManagerMock, + null, + null, + null, + null, + null); + } + + @Test + public void testSuccessfulUploadFile() throws Exception { + VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0)); + doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class)); + + try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/SDCmock.csar")) { + UploadFileResponse uploadFileResponse = candidateManager.upload(id001, activeVersion002, is, USER1, "csar", "SDCmock"); + assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR); + assertEquals(0, uploadFileResponse.getErrors().size()); + assertTrue(uploadFileResponse.getErrors().isEmpty()); + } + } + + @Test + public void testFail1UploadFile() throws Exception { + VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0)); + doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class)); + + try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/SDCmockFail1.csar")) { + UploadFileResponse uploadFileResponse = candidateManager.upload(id001, activeVersion002, is, USER1, + "csar", "SDCmockFail1"); + assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR); + assertEquals(1, uploadFileResponse.getErrors().size()); + assertTrue( uploadFileResponse.getErrors().values().stream() + .filter(getListPredicate(Messages.CSAR_FILES_NOT_ALLOWED + .getErrorMessage().substring(0, 7))).findAny().isPresent()); + } + } + + private Predicate<List<ErrorMessage>> getListPredicate(String substring) { + return error -> isEquals(substring, error); + } + + private boolean isEquals(String substring, List<ErrorMessage> error) { + return error.iterator().next().getMessage().contains(substring); + } + + @Test + public void testFail2UploadFile() throws Exception { + VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0)); + doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class)); + + try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/SDCmockFail2.csar")) { + UploadFileResponse uploadFileResponse = candidateManager.upload(id001, activeVersion002, is, USER1, + "csar", "SDCmockFail2"); + assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR); + assertEquals(1, uploadFileResponse.getErrors().size()); + assertTrue( uploadFileResponse.getErrors().values().stream() + .filter(getListPredicate(Messages.CSAR_FILE_NOT_FOUND + .getErrorMessage().substring(0,7))).findAny().isPresent()); + } + } + @Test + public void testFail3UploadFile() throws Exception { + VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0)); + doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class)); + + try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/SDCmockFail3.csar")) { + UploadFileResponse uploadFileResponse = candidateManager.upload(id001, activeVersion002, is, USER1, + "csar", "SDCmockFail3"); + assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR); + assertEquals(1, uploadFileResponse.getErrors().size()); + } + } + + @Test + public void testUploadFileIsNotZip() throws Exception { + VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0)); + doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class)); + + try (InputStream is = new ByteArrayInputStream( "Thia is not a zip file".getBytes() );) { + UploadFileResponse uploadFileResponse = candidateManager.upload(id001, activeVersion002, is, USER1, + "csar", "file"); + assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR); + assertFalse(uploadFileResponse.getErrors().isEmpty()); + assertTrue( uploadFileResponse.getErrors().values().stream() + .filter(getListPredicate(Messages.CSAR_FILE_NOT_FOUND + .getErrorMessage().substring(0,7))).findAny().isPresent()); + } + } + @Test + public void testUploadFileIsEmpty() throws Exception { + VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0)); + doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class)); + + try (InputStream is = new ByteArrayInputStream( new byte[]{} )) { + UploadFileResponse uploadFileResponse = candidateManager.upload(id001, + activeVersion002, is, USER1, "csar", "file"); + assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR); + assertEquals(1, uploadFileResponse.getErrors().size()); + } + } + + @Test + public void testMFError() throws Exception { + VspDetails vspDetails = new VspDetails("dummyId", new Version(1, 0)); + doReturn(vspDetails).when(vspInfoDaoMock).get(any(VspDetails.class)); + + try (InputStream is = getClass().getResourceAsStream("/vspmanager.csar/SDCmockBrokenMF.csar")) { + UploadFileResponse uploadFileResponse = candidateManager.upload(id001, activeVersion002, is, USER1, "csar", "SDCmockBrokenMF"); + assertEquals(uploadFileResponse.getOnboardingType(), OnboardingTypesEnum.CSAR); + assertEquals(1, uploadFileResponse.getErrors().size()); + assertTrue( uploadFileResponse.getErrors() + .values().stream() + .filter(getListPredicate(Messages.MANIFEST_NO_METADATA.getErrorMessage())).findAny().isPresent()); + + } + } + + +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmock.csar b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmock.csar Binary files differnew file mode 100644 index 0000000000..f69efd2bb8 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmock.csar diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockBrokenMF.csar b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockBrokenMF.csar Binary files differnew file mode 100644 index 0000000000..02593a1d2f --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockBrokenMF.csar diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail1.csar b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail1.csar Binary files differnew file mode 100644 index 0000000000..5e3ee6f387 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail1.csar diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail2.csar b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail2.csar Binary files differnew file mode 100644 index 0000000000..4874578ad9 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail2.csar diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail3.csar b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail3.csar Binary files differnew file mode 100644 index 0000000000..c009a042e4 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/SDCmockFail3.csar diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca1.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca1.mf new file mode 100644 index 0000000000..f28014e2d6 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca1.mf @@ -0,0 +1,11 @@ + + +source: MainServiceTemplate.yaml + +source: Definitions/GlobalSubstitutionTypesServiceTemplate.yaml + +source: Artifacts/install.sh + +source: Artifacts/create_stack.sh + +source: Licenses/license.xml diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca2.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca2.mf new file mode 100644 index 0000000000..95f7a41d68 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca2.mf @@ -0,0 +1,18 @@ +metadata: + vnf_product_name: Mock + vnf_provider_id: ZTE + +source: MainServiceTemplate.yaml + + vnf_package_version: 1.0 + vnf_release_data_time: 2017.01.01T10:00+03:00 + + + +source: Definitions/GlobalSubstitutionTypesServiceTemplate.yaml + +source: Artifacts/install.sh + +source: Artifacts/create_stack.sh + +source: Licenses/license.xml diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca3.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca3.mf new file mode 100644 index 0000000000..64e9445f7f --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca3.mf @@ -0,0 +1,7 @@ +metadata: + vnf_product_name: Mock + vnf_provider_id: ZTE + vnf_package_version: 1.0 + vnf_release_data_time: 2017.01.01T10:00+03:00 + + diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca4.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca4.mf new file mode 100644 index 0000000000..a563ddd581 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/InvalidTosca4.mf @@ -0,0 +1,12 @@ +metadata: + + +source: MainServiceTemplate.yaml + +source: Definitions/GlobalSubstitutionTypesServiceTemplate.yaml + +source: Artifacts/install.sh + +source: Artifacts/create_stack.sh + +source: Licenses/license.xml diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidTosca.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidTosca.mf new file mode 100644 index 0000000000..88c67517ce --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidTosca.mf @@ -0,0 +1,15 @@ +metadata: + vnf_product_name: Mock + vnf_provider_id: ZTE + vnf_package_version: 1.0 + vnf_release_data_time: 2017.01.01T10:00+03:00 + +source: MainServiceTemplate.yaml + +source: Definitions/GlobalSubstitutionTypesServiceTemplate.yaml + +source: Artifacts/install.sh + +source: Artifacts/create_stack.sh + +source: Licenses/license.xml diff --git a/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java index 9fff4bd749..8bcb0a5ffe 100644 --- a/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java +++ b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java @@ -28,6 +28,14 @@ public enum Messages { "functionalities"), INVALID_ZIP_FILE("Invalid zip file"), + INVALID_CSAR_FILE("Invalid csar file"), + CSAR_FILE_NOT_FOUND("Each CSAR file must contain %s file."), + CSAR_DIRECTORIES_NOT_ALLOWED("Directory : %s , is not allowed."), + CSAR_FILES_NOT_ALLOWED("File : %s , are not allowed."), + MANIFEST_INVALID_LINE("Manifest contains invalid line : %s"), + MANIFEST_NO_METADATA("Manifest must contain metadata"), + MANIFEST_NO_SOURCES("Manifest must contain source"), + MANIFEST_PARSER_INTERNAL("Invalid manifest file"), FAILED_TO_TRANSLATE_ZIP_FILE("Failed to translate zip file"), ZIP_NOT_EXIST("Zip file doesn't exist"), @@ -45,7 +53,7 @@ public enum Messages { NO_ZIP_FILE_WAS_UPLOADED_OR_ZIP_NOT_EXIST("no zip file was uploaded or zip file doesn't exist"), MAPPING_OBJECTS_FAILURE("Failed to map object %s to %s. Exception message: %s"), MORE_THEN_ONE_VOL_FOR_HEAT("heat contains more then one vol. selecting only first vol"), - ZIP_CONTENT_MAP("failed to load zip content"), + FILE_CONTENT_MAP("failed to load %s content"), CREATE_MANIFEST_FROM_ZIP("cannot create manifest from the attached zip file"), CANDIDATE_PROCESS_FAILED("Candidate zip file process failed"), FOUND_UNASSIGNED_FILES("cannot process zip since it has unassigned files"), @@ -66,7 +74,9 @@ public enum Messages { INVALID_MANIFEST_FILE("invalid manifest file"), INVALID_FILE_TYPE("Missing or Unknown file type in Manifest"), ENV_NOT_ASSOCIATED_TO_HEAT("ENV file must be associated to a HEAT file"), - + CSAR_MANIFEST_FILE_NOT_EXIST("CSAR manifest file does not exist"), + CSAR_FAILED_TO_READ("CSAR file is not readable"), + TOSCA_PARSING_FAILURE("Invalid tosca file. Error code : %s, Error message : %s/"), /* content errors*/ INVALID_YAML_FORMAT("Invalid YAML format - %s"), INVALID_YAML_FORMAT_REASON("Invalid YAML format Problem - [%s]"), diff --git a/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/utils/CommonUtil.java b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/utils/CommonUtil.java index 07322c626b..1c5293004d 100644 --- a/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/utils/CommonUtil.java +++ b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/utils/CommonUtil.java @@ -22,8 +22,11 @@ package org.openecomp.sdc.common.utils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; import org.openecomp.core.utilities.file.FileContentHandler; import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.common.errors.ErrorCategory; import org.openecomp.sdc.common.errors.ErrorCode; @@ -45,29 +48,42 @@ import java.util.zip.ZipInputStream; public class CommonUtil { - public static FileContentHandler validateAndUploadFileContent(byte[] uploadedFileData) + public static FileContentHandler validateAndUploadFileContent(OnboardingTypesEnum type, + byte[] uploadedFileData) throws IOException { - return getFileContentMapFromOrchestrationCandidateZipAndValidateNoFolders(uploadedFileData); + return getFileContentMapFromOrchestrationCandidateZipAndValidateNoFolders(type, uploadedFileData); } /** * Gets files out of the zip AND validates zip is flat (no folders) * + * + * @param type * @param uploadFileData zip file * @return FileContentHandler if input is valid and has no folders */ private static FileContentHandler getFileContentMapFromOrchestrationCandidateZipAndValidateNoFolders( - byte[] uploadFileData) + OnboardingTypesEnum type, byte[] uploadFileData) throws IOException { + Pair<FileContentHandler,List<String> > pair = getFileContentMapFromOrchestrationCandidateZip(uploadFileData); + + if(type.equals(OnboardingTypesEnum.ZIP)) { + validateNoFolders(pair.getRight()); + } + + return pair.getLeft(); + } + + public static Pair<FileContentHandler,List<String> > getFileContentMapFromOrchestrationCandidateZip( + byte[] uploadFileData) + throws IOException { ZipEntry zipEntry; List<String> folderList = new ArrayList<>(); FileContentHandler mapFileContent = new FileContentHandler(); - try { - ZipInputStream inputZipStream; - + try ( ByteArrayInputStream in = new ByteArrayInputStream(uploadFileData); + ZipInputStream inputZipStream = new ZipInputStream(in)){ byte[] fileByteContent; String currentEntryName; - inputZipStream = new ZipInputStream(new ByteArrayInputStream(uploadFileData)); while ((zipEntry = inputZipStream.getNextEntry()) != null) { currentEntryName = zipEntry.getName(); @@ -77,7 +93,8 @@ public class CommonUtil { int index = lastIndexFileSeparatorIndex(currentEntryName); if (index != -1) { //todo ? folderList.add(currentEntryName); - } else { + } + if(isFile(currentEntryName)) { mapFileContent.addFile(currentEntryName, fileByteContent); } } @@ -86,9 +103,11 @@ public class CommonUtil { throw new IOException(exception); } - validateNoFolders(folderList); + return new ImmutablePair<>(mapFileContent,folderList); + } - return mapFileContent; + private static boolean isFile(String currentEntryName) { + return !(currentEntryName.endsWith("\\") || currentEntryName.endsWith("/")); } private static void validateNoFolders(List<String> folderList) { diff --git a/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/utils/SdcCommon.java b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/utils/SdcCommon.java index 156a86c841..24da8363c1 100644 --- a/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/utils/SdcCommon.java +++ b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/utils/SdcCommon.java @@ -23,6 +23,7 @@ package org.openecomp.sdc.common.utils; public class SdcCommon { public static final String MANIFEST_NAME = "MANIFEST.json"; + public static final String CSAR_MANIFEST_NAME = "MainServiceTemplate.mf"; public static final String UPLOAD_FILE = "uploadFile"; public static final String PROCESS_FILE = "Process File"; public static final String ILLEGAL_MANIFEST = "Illegal manifest"; diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoriesConfigImpl.java b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoriesConfigImpl.java index 173f9b15b1..b9d03f4d1a 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoriesConfigImpl.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoriesConfigImpl.java @@ -25,7 +25,9 @@ import org.openecomp.core.factory.api.FactoriesConfiguration; import org.openecomp.core.utilities.file.FileUtils; import org.openecomp.core.utilities.json.JsonUtil; +import java.io.IOException; import java.io.InputStream; +import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -50,12 +52,16 @@ public final class FactoriesConfigImpl implements FactoriesConfiguration { } private void init() { - List<InputStream> factoryConfigIsList = FileUtils.getFileInputStreams(FACTORY_CONFIG_FILE_NAME); - for (InputStream factoryConfigIs : factoryConfigIsList) { - factoryMap.putAll(JsonUtil.json2Object(factoryConfigIs, Map.class)); - } - } + List<URL> factoryConfigUrlList = FileUtils.getAllLocations(FACTORY_CONFIG_FILE_NAME); + for (URL factoryConfigUrl : factoryConfigUrlList) { + try (InputStream stream = factoryConfigUrl.openStream()) { + factoryMap.putAll(JsonUtil.json2Object(stream, Map.class)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/util/UniqueValueUtil.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/util/UniqueValueUtil.java index d2dee5e512..dce34a1c96 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/util/UniqueValueUtil.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/src/main/java/org/openecomp/core/util/UniqueValueUtil.java @@ -27,7 +27,6 @@ import org.openecomp.core.utilities.CommonMethods; import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.common.errors.ErrorCategory; import org.openecomp.sdc.common.errors.ErrorCode; -import org.openecomp.sdc.common.utils.CommonUtil; import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage; import java.util.Optional; @@ -95,9 +94,10 @@ public class UniqueValueUtil { mdcDataDebugMessage.debugEntryMessage(null, null); - if ((newValue != null && oldValue != null - && !newValue.toLowerCase().equals(oldValue.toLowerCase())) - || newValue == null || oldValue == null) { + boolean nonEqual = (newValue != null) && (oldValue != null) + && !newValue.toLowerCase().equals(oldValue.toLowerCase()); + + if (nonEqual || newValue == null || oldValue == null) { createUniqueValue(type, CommonMethods.concat(uniqueContext, new String[]{newValue})); deleteUniqueValue(type, CommonMethods.concat(uniqueContext, new String[]{oldValue})); } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/util/CassandraUtils.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/util/CassandraUtils.java index 2a88d0e521..7a70900873 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/util/CassandraUtils.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/util/CassandraUtils.java @@ -23,7 +23,6 @@ package org.openecomp.core.nosqldb.util; import org.openecomp.core.utilities.file.FileUtils; import org.openecomp.core.utilities.json.JsonUtil; -import java.io.InputStream; import java.util.HashMap; import java.util.Map; @@ -49,10 +48,12 @@ public class CassandraUtils { * @return the statement */ public static String getStatement(String statementName) { + if (statementMap.size() == 0) { - InputStream statementJson = FileUtils.getFileInputStream(CASSANDRA_STATEMENT_DEFINITION_FILE); - statementMap = JsonUtil.json2Object(statementJson, Map.class); + statementMap = FileUtils.readViaInputStream(CASSANDRA_STATEMENT_DEFINITION_FILE, + stream -> JsonUtil.json2Object(stream, Map.class)); } + return statementMap.get(statementName); } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileUtils.java b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileUtils.java index 87ce8d37c3..0fb587cc68 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileUtils.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileUtils.java @@ -20,6 +20,7 @@ package org.openecomp.core.utilities.file; +import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.openecomp.core.utilities.json.JsonUtil; import org.openecomp.sdc.tosca.services.YamlUtil; @@ -28,9 +29,12 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; -import java.util.ArrayList; +import java.util.Collections; import java.util.Enumeration; +import java.util.LinkedList; import java.util.List; +import java.util.Objects; +import java.util.function.Function; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; @@ -40,38 +44,29 @@ import java.util.zip.ZipInputStream; public class FileUtils { /** - * Gets file input stream. + * Allows to consume an input stream open against a resource with a given file name. * * @param fileName the file name - * @return the file input stream + * @param function logic to be applied to the input stream */ - public static InputStream getFileInputStream(String fileName) { - URL urlFile = FileUtils.class.getClassLoader().getResource(fileName); - InputStream is; - try { - assert urlFile != null; - is = urlFile.openStream(); - } catch (IOException exception) { - throw new RuntimeException(exception); - } - return is; + public static <T> T readViaInputStream(String fileName, Function<InputStream, T> function) { + return readViaInputStream(FileUtils.class.getClassLoader().getResource(fileName), function); } /** - * Gets file input stream. + * Allows to consume an input stream open against a resource with a given URL. * * @param urlFile the url file - * @return the file input stream + * @param function logic to be applied to the input stream */ - public static InputStream getFileInputStream(URL urlFile) { - InputStream is; - try { - assert urlFile != null; - is = urlFile.openStream(); + public static <T> T readViaInputStream(URL urlFile, Function<InputStream, T> function) { + + Objects.requireNonNull(urlFile); + try (InputStream is = urlFile.openStream()) { + return function.apply(is); } catch (IOException exception) { throw new RuntimeException(exception); } - return is; } /** @@ -80,24 +75,23 @@ public class FileUtils { * @param fileName the file name * @return the file input streams */ - public static List<InputStream> getFileInputStreams(String fileName) { + public static List<URL> getAllLocations(String fileName) { + + List<URL> urls = new LinkedList<>(); Enumeration<URL> urlFiles; - List<InputStream> streams = new ArrayList<>(); - InputStream is; - URL url; + try { urlFiles = FileUtils.class.getClassLoader().getResources(fileName); while (urlFiles.hasMoreElements()) { - url = urlFiles.nextElement(); - is = url.openStream(); - streams.add(is); + urls.add(urlFiles.nextElement()); } } catch (IOException exception) { throw new RuntimeException(exception); } - return streams; + + return urls.isEmpty() ? Collections.emptyList() : Collections.unmodifiableList(urls); } /** @@ -202,6 +196,19 @@ public class FileUtils { return fileName.substring(0, fileName.lastIndexOf(".")); } + public static String getFileExtension(String filename) { + return FilenameUtils.getExtension(filename); + } + + public static String getNetworkPackageName(String filename){ + String[] split = filename.split("\\."); + String name = null; + if (split != null && split.length > 1){ + name = split[0]; + } + return name; + } + /** * Gets file content map from zip. * @@ -210,25 +217,22 @@ public class FileUtils { * @throws IOException the io exception */ public static FileContentHandler getFileContentMapFromZip(byte[] zipData) throws IOException { - ZipEntry zipEntry; - FileContentHandler mapFileContent = new FileContentHandler(); - try { - ZipInputStream inputZipStream; - byte[] fileByteContent; - String currentEntryName; - inputZipStream = new ZipInputStream(new ByteArrayInputStream(zipData)); + try (ZipInputStream inputZipStream = new ZipInputStream(new ByteArrayInputStream(zipData))) { + + FileContentHandler mapFileContent = new FileContentHandler(); + + ZipEntry zipEntry; while ((zipEntry = inputZipStream.getNextEntry()) != null) { - currentEntryName = zipEntry.getName(); - fileByteContent = FileUtils.toByteArray(inputZipStream); - mapFileContent.addFile(currentEntryName, fileByteContent); + mapFileContent.addFile(zipEntry.getName(), FileUtils.toByteArray(inputZipStream)); } + return mapFileContent; + } catch (RuntimeException exception) { throw new IOException(exception); } - return mapFileContent; } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/orchestration/OnboardingTypesEnum.java b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/orchestration/OnboardingTypesEnum.java new file mode 100644 index 0000000000..04e64c33a9 --- /dev/null +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/orchestration/OnboardingTypesEnum.java @@ -0,0 +1,32 @@ +package org.openecomp.core.utilities.orchestration; + +import java.util.Optional; + +import static java.util.Arrays.asList; +public enum OnboardingTypesEnum { + CSAR("csar"), ZIP("zip"), NONE("none"); + private String type; + + OnboardingTypesEnum(String type) { + this.type = type; + } + + @Override + public String toString() { + return type; + } + + public static final OnboardingTypesEnum getOnboardingTypesEnum(final String inStr) { + if (inStr == null) { + return null; + } + Optional<OnboardingTypesEnum> onboardingTypesOptional = asList(OnboardingTypesEnum.values()).stream() + .filter(onboardingTypesEnum -> onboardingTypesEnum.toString().equals(inStr)).findAny(); + if( onboardingTypesOptional.isPresent()){ + return onboardingTypesOptional.get(); + }else { + return null; + } + } + +} diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonSchemaDataGeneratorTest.java b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonSchemaDataGeneratorTest.java index ba34d07034..9b21f632cc 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonSchemaDataGeneratorTest.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonSchemaDataGeneratorTest.java @@ -28,14 +28,17 @@ import org.testng.annotations.Test; public class JsonSchemaDataGeneratorTest { - public static final String SCHEMA_WITHOUT_DEFAULTS = new String( - FileUtils.toByteArray(FileUtils.getFileInputStream("jsonUtil/json_schema/aSchema.json"))); - public static final String SCHEMA_WITH_REFS_AND_DEFAULTS = new String(FileUtils.toByteArray( - FileUtils.getFileInputStream("jsonUtil/json_schema/schemaWithRefsAndDefaults.json"))); - public static final String SCHEMA_WITH_INVALID_DEFAULT = new String(FileUtils.toByteArray( - FileUtils.getFileInputStream("jsonUtil/json_schema/schemaWithInvalidDefault.json"))); - public static final String SCHEMA_NIC = new String( - FileUtils.toByteArray(FileUtils.getFileInputStream("jsonUtil/json_schema/nicSchema.json"))); + public static final String SCHEMA_WITHOUT_DEFAULTS = + readFromFile("jsonUtil/json_schema/aSchema.json"); + + public static final String SCHEMA_WITH_REFS_AND_DEFAULTS = + readFromFile("jsonUtil/json_schema/schemaWithRefsAndDefaults.json"); + + public static final String SCHEMA_WITH_INVALID_DEFAULT = + readFromFile("jsonUtil/json_schema/schemaWithInvalidDefault.json"); + + public static final String SCHEMA_NIC = + readFromFile("jsonUtil/json_schema/nicSchema.json"); @Test public void testSchemaWithoutDefaults() { @@ -67,4 +70,8 @@ public class JsonSchemaDataGeneratorTest { JSONObject dataJson = new JSONObject(data); Assert.assertTrue(expectedData.similar(dataJson)); } + + private static String readFromFile(String filename) { + return FileUtils.readViaInputStream(filename, stream -> new String(FileUtils.toByteArray(stream))); + } } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonUtilTest.java b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonUtilTest.java index 6b8805797a..d89019baec 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonUtilTest.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonUtilTest.java @@ -31,10 +31,14 @@ public class JsonUtilTest { @Test public void testValidJsonValidate() throws Exception { - String json = - new String(FileUtils.toByteArray(FileUtils.getFileInputStream("jsonUtil/json/a.json"))); - String jsonSchema = new String( - FileUtils.toByteArray(FileUtils.getFileInputStream("jsonUtil/json_schema/aSchema.json"))); + + + + String json = FileUtils.readViaInputStream("jsonUtil/json/a.json", + stream -> new String(FileUtils.toByteArray(stream))); + + String jsonSchema = FileUtils.readViaInputStream("jsonUtil/json_schema/aSchema.json", + stream -> new String(FileUtils.toByteArray(stream))); List<String> validationErrors = JsonUtil.validate(json, jsonSchema); Assert.assertNull(validationErrors); @@ -42,10 +46,11 @@ public class JsonUtilTest { @Test public void testInValidJsonValidate() throws Exception { - String json = new String( - FileUtils.toByteArray(FileUtils.getFileInputStream("jsonUtil/json/a_invalid.json"))); - String jsonSchema = new String( - FileUtils.toByteArray(FileUtils.getFileInputStream("jsonUtil/json_schema/aSchema.json"))); + + String json = FileUtils.readViaInputStream("jsonUtil/json/a_invalid.json", + stream -> new String(FileUtils.toByteArray(stream))); + String jsonSchema = FileUtils.readViaInputStream("jsonUtil/json_schema/aSchema.json", + stream -> new String(FileUtils.toByteArray(stream))); List<String> validationErrors = JsonUtil.validate(json, jsonSchema); Assert.assertNotNull(validationErrors); diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/src/main/java/org/openecomp/sdc/healing/impl/HealingManagerImpl.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/src/main/java/org/openecomp/sdc/healing/impl/HealingManagerImpl.java index 0d4cb9c0ba..0f2c0e7ee1 100644 --- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/src/main/java/org/openecomp/sdc/healing/impl/HealingManagerImpl.java +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/src/main/java/org/openecomp/sdc/healing/impl/HealingManagerImpl.java @@ -20,20 +20,19 @@ package org.openecomp.sdc.healing.impl; -import org.openecomp.sdc.datatypes.error.ErrorLevel; -import org.openecomp.sdc.healing.interfaces.Healer; import org.openecomp.core.utilities.file.FileUtils; -import org.openecomp.sdc.healing.types.HealCode; import org.openecomp.core.utilities.json.JsonUtil; -import org.openecomp.sdc.healing.api.HealingManager; import org.openecomp.sdc.common.errors.Messages; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.healing.api.HealingManager; +import org.openecomp.sdc.healing.interfaces.Healer; +import org.openecomp.sdc.healing.types.HealCode; import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage; import org.openecomp.sdc.logging.types.LoggerConstants; import org.openecomp.sdc.logging.types.LoggerErrorCode; import org.openecomp.sdc.logging.types.LoggerErrorDescription; import org.openecomp.sdc.logging.types.LoggerTragetServiceName; -import java.io.InputStream; import java.lang.reflect.Constructor; import java.util.Map; @@ -77,8 +76,7 @@ public class HealingManagerImpl implements HealingManager { } private static Map<String, String> initHealers() { - InputStream healingConfigurationJson = FileUtils.getFileInputStream(HEALING_CONF_FILE); - return JsonUtil.json2Object(healingConfigurationJson, Map.class); + return FileUtils.readViaInputStream(HEALING_CONF_FILE, stream -> JsonUtil.json2Object(stream, Map.class)); } private Healer getHealerImplInstance(String implClassName) diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/pom.xml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/pom.xml index 618922c2af..03ee98dd4e 100644 --- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/pom.xml +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/pom.xml @@ -33,6 +33,13 @@ <artifactId>openecomp-sdc-vendor-license-api</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junit.version}</version> + <scope>test</scope> + </dependency> + </dependencies> </project> diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/CompositionDataHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/CompositionDataHealer.java index bdb7bc3a93..9800d02ba6 100644 --- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/CompositionDataHealer.java +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/CompositionDataHealer.java @@ -27,6 +27,7 @@ import org.openecomp.core.model.types.ServiceElement; import org.openecomp.core.translator.datatypes.TranslatorOutput; import org.openecomp.core.utilities.file.FileContentHandler; import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; import org.openecomp.sdc.common.utils.CommonUtil; import org.openecomp.sdc.common.utils.SdcCommon; import org.openecomp.sdc.healing.interfaces.Healer; @@ -49,7 +50,6 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDaoFactory; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComputeEntity; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity; @@ -300,7 +300,8 @@ public class CompositionDataHealer implements Healer { FileContentHandler fileContentHandler; try { fileContentHandler = - CommonUtil.validateAndUploadFileContent(uploadData.getContentData().array()); + CommonUtil.validateAndUploadFileContent( + OnboardingTypesEnum.ZIP, uploadData.getContentData().array()); return HeatToToscaUtil.loadAndTranslateTemplateData(fileContentHandler); } catch (Exception e) { return null; diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/FileDataStructureHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/FileDataStructureHealer.java index e0b7adb6d3..0d484440cf 100644 --- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/FileDataStructureHealer.java +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/FileDataStructureHealer.java @@ -22,6 +22,7 @@ package org.openecomp.sdc.healing.healers; import org.openecomp.core.utilities.file.FileContentHandler; import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; import org.openecomp.sdc.common.utils.CommonUtil; import org.openecomp.sdc.common.utils.SdcCommon; import org.openecomp.sdc.datatypes.error.ErrorMessage; @@ -94,7 +95,7 @@ public class FileDataStructureHealer implements Healer { byte[] byteContentData = uploadData.getContentData().array(); FileContentHandler fileContentHandler; try{ - fileContentHandler = CommonUtil.validateAndUploadFileContent(byteContentData); + fileContentHandler = CommonUtil.validateAndUploadFileContent(OnboardingTypesEnum.ZIP, byteContentData); Map<String, List<ErrorMessage>> errors = new HashMap<>(); OrchestrationTemplateCandidateData candidateDataEntity = new CandidateEntityBuilder(candidateService) diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/HeatToToscaTranslationHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/HeatToToscaTranslationHealer.java index d5ccd36c95..44b6062e89 100644 --- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/HeatToToscaTranslationHealer.java +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/HeatToToscaTranslationHealer.java @@ -8,6 +8,7 @@ import org.openecomp.core.model.dao.ServiceTemplateDaoInter; import org.openecomp.core.model.types.ServiceElement; import org.openecomp.core.translator.datatypes.TranslatorOutput; import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; import org.openecomp.sdc.common.utils.CommonUtil; import org.openecomp.sdc.common.utils.SdcCommon; import org.openecomp.sdc.healing.interfaces.Healer; @@ -53,7 +54,7 @@ public class HeatToToscaTranslationHealer implements Healer { FileContentHandler fileContentHandler; TranslatorOutput translatorOutput; try { - fileContentHandler = CommonUtil.validateAndUploadFileContent(uploadData + fileContentHandler = CommonUtil.validateAndUploadFileContent(OnboardingTypesEnum.ZIP, uploadData .getContentData().array()); translatorOutput = HeatToToscaUtil.loadAndTranslateTemplateData(fileContentHandler); diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealer.java index 5d6050a7f0..0b06fb1c83 100644 --- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealer.java +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealer.java @@ -1,11 +1,10 @@ package org.openecomp.sdc.healing.healers; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; import org.openecomp.sdc.common.utils.SdcCommon; import org.openecomp.sdc.healing.interfaces.Healer; import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage; -import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao; -import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDaoFactory; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDaoFactory; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; @@ -15,15 +14,18 @@ import java.util.Map; import java.util.Objects; public class VspOnboardingMethodHealer implements Healer { - /*private static final VendorSoftwareProductDao vendorSoftwareProductDao = - VendorSoftwareProductDaoFactory.getInstance().createInterface();*/ - private static final VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao = + private static VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao = VendorSoftwareProductInfoDaoFactory.getInstance().createInterface(); private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); public VspOnboardingMethodHealer(){ + } + public VspOnboardingMethodHealer( VendorSoftwareProductInfoDao inVendorSoftwareProductInfoDao){ + vendorSoftwareProductInfoDao = inVendorSoftwareProductInfoDao; } + + @Override public Object heal(Map<String, Object> healingParams) throws Exception { mdcDataDebugMessage.debugEntryMessage(null, null); @@ -33,14 +35,22 @@ public class VspOnboardingMethodHealer implements Healer { Version version = (Version) healingParams.get(SdcCommon.VERSION); VspDetails vendorSoftwareProductInfo = vendorSoftwareProductInfoDao.get(new VspDetails(vspId, version)); - vendorSoftwareProductInfo.getOnboardingMethod(); + String onboardingValue = vendorSoftwareProductInfo.getOnboardingMethod(); - if(Objects.isNull(vendorSoftwareProductInfo.getOnboardingMethod())) { - onboardingMethod="HEAT"; - vendorSoftwareProductInfo.setOnboardingMethod(onboardingMethod); - vendorSoftwareProductInfoDao.update(vendorSoftwareProductInfo); - //vendorSoftwareProductDao.updateVendorSoftwareProductInfo(vendorSoftwareProductInfo); + if(Objects.isNull(onboardingValue)) { + onboardingMethod="NetworkPackage"; + + updateVSPInfo(OnboardingTypesEnum.ZIP.toString(), onboardingMethod, vendorSoftwareProductInfo); + } else if (onboardingValue.equals("HEAT")){ + onboardingMethod="NetworkPackage"; + updateVSPInfo(OnboardingTypesEnum.ZIP.toString(),onboardingMethod, vendorSoftwareProductInfo); } return onboardingMethod; } + + private void updateVSPInfo(String onboardingOrigin, String onboardingMethod, VspDetails vendorSoftwareProductInfo) { + vendorSoftwareProductInfo.setOnboardingMethod(onboardingMethod); + vendorSoftwareProductInfo.setOnboardingOrigin(onboardingOrigin); + vendorSoftwareProductInfoDao.update(vendorSoftwareProductInfo); + } } diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealerTest.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealerTest.java new file mode 100644 index 0000000000..b732cb03b6 --- /dev/null +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealerTest.java @@ -0,0 +1,70 @@ +package org.openecomp.sdc.healing.healers; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.openecomp.sdc.common.utils.SdcCommon; +import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; +import org.openecomp.sdc.versioning.dao.types.Version; + +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Matchers.any; + +public class VspOnboardingMethodHealerTest{ + + @Mock + private VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(VspOnboardingMethodHealerTest.this); + } + + @Test + public void checkHealingWithNullOnboarding() throws Exception{ + VspOnboardingMethodHealer vspOnboardingMethodHealer = new VspOnboardingMethodHealer(vendorSoftwareProductInfoDao); + Map<String,Object> params = new HashMap<>(); + params.put(SdcCommon.VSP_ID,"1"); + params.put(SdcCommon.VERSION, new Version(1,1)); + VspDetails vspDetails = new VspDetails(); + vspDetails.setOnboardingMethod(null); + Mockito.when(vendorSoftwareProductInfoDao.get(any())).thenReturn(vspDetails); + vspOnboardingMethodHealer.heal(params); + assertEquals(vspDetails.getOnboardingMethod(),"NetworkPackage"); + assertEquals(vspDetails.getOnboardingOrigin(),"zip"); + } + + @Test + public void checkHealingWithHEATOnboarding() throws Exception{ + VspOnboardingMethodHealer vspOnboardingMethodHealer = new VspOnboardingMethodHealer(vendorSoftwareProductInfoDao); + Map<String,Object> params = new HashMap<>(); + params.put(SdcCommon.VSP_ID,"1"); + params.put(SdcCommon.VERSION, new Version(1,1)); + VspDetails vspDetails = new VspDetails(); + vspDetails.setOnboardingMethod("HEAT"); + Mockito.when(vendorSoftwareProductInfoDao.get(any())).thenReturn(vspDetails); + vspOnboardingMethodHealer.heal(params); + assertEquals(vspDetails.getOnboardingMethod(),"NetworkPackage"); + assertEquals(vspDetails.getOnboardingOrigin(),"zip"); + } + + @Test + public void checkHealingWithManualOnboarding() throws Exception{ + VspOnboardingMethodHealer vspOnboardingMethodHealer = new VspOnboardingMethodHealer(vendorSoftwareProductInfoDao); + Map<String,Object> params = new HashMap<>(); + params.put(SdcCommon.VSP_ID,"1"); + params.put(SdcCommon.VERSION, new Version(1,1)); + VspDetails vspDetails = new VspDetails(); + vspDetails.setOnboardingMethod("Manual"); + Mockito.when(vendorSoftwareProductInfoDao.get(any())).thenReturn(vspDetails); + vspOnboardingMethodHealer.heal(params); + assertEquals(vspDetails.getOnboardingMethod(),"Manual"); + assertEquals(vspDetails.getOnboardingOrigin(),null); + } +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-heat-lib/pom.xml b/openecomp-be/lib/openecomp-heat-lib/pom.xml index 55ab0623b4..0a4e14f417 100644 --- a/openecomp-be/lib/openecomp-heat-lib/pom.xml +++ b/openecomp-be/lib/openecomp-heat-lib/pom.xml @@ -16,6 +16,18 @@ <dependencies> <dependency> <groupId>org.openecomp.sdc.common</groupId> + <artifactId>openecomp-configuration-management-core</artifactId> + <version>${openecomp.sdc.common.version}</version> + <scope>runtime</scope> + <exclusions> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.openecomp.sdc.common</groupId> <artifactId>openecomp-tosca-datatype</artifactId> <version>${openecomp.sdc.common.version}</version> </dependency> @@ -52,4 +64,19 @@ </dependency> </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>${mvn.surefire.version}</version> + <configuration> + <skipTests>true</skipTests> + <useSystemClassLoader>false</useSystemClassLoader> + <redirectTestOutputToFile>true</redirectTestOutputToFile> + </configuration> + </plugin> + </plugins> + </build> + </project> diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManager.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManager.java new file mode 100644 index 0000000000..517c690194 --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManager.java @@ -0,0 +1,79 @@ +package org.openecomp.sdc.heat.services.tree; + +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.sdc.common.utils.SdcCommon; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.heat.datatypes.structure.Artifact; +import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; + +import java.io.File; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; + +public class ToscaTreeManager { + + private static Logger logger = (Logger) LoggerFactory.getLogger(ToscaTreeManager.class); + + private FileContentHandler csarContentMap = new FileContentHandler(); + private byte[] manifest; + private HeatStructureTree tree = new HeatStructureTree(); + private Map<String, Artifact> artifactRef = new HashMap<>(); + private Map<String, HeatStructureTree> fileTreeRef = new HashMap<>(); + + + public void addFile(String fileName, byte[] content) { + if (fileName.equals(SdcCommon.CSAR_MANIFEST_NAME)) { + manifest = content; + + } else { + csarContentMap.addFile(fileName, content); + } + } + + public void createTree(){ + if (manifest == null) { + logger.error("Missing manifest file in the zip."); + return; + } + + for(Map.Entry<String, byte[]> fileEntry : csarContentMap.getFiles().entrySet()){ + String[] splitFilename = getFullFileNameAsArray(fileEntry.getKey()); + addFileToTree(splitFilename, 0, tree); + } + + + } + + private void addFileToTree(String[] splitFilename, int startIndex, HeatStructureTree parent){ + fileTreeRef.putIfAbsent(splitFilename[startIndex], new HeatStructureTree()); + HeatStructureTree heatStructureTree = fileTreeRef.get(splitFilename[startIndex]); + heatStructureTree.setFileName(splitFilename[startIndex]); + if(startIndex < splitFilename.length - 1){ + addFileToTree(splitFilename, startIndex + 1, heatStructureTree); + } + parent.addHeatStructureTreeToNestedHeatList(heatStructureTree); + } + + public void addErrors(Map<String, List<ErrorMessage>> validationErrors){ + validationErrors.entrySet().stream().filter(entry -> { + return fileTreeRef.get(entry.getKey()) != null; + }).forEach(entry -> entry.getValue().stream().forEach(error -> + fileTreeRef.get(entry.getKey()).addErrorToErrorsList(error))); + } + + private String[] getFullFileNameAsArray(String filename){ + if(filename.contains("/")){ + return filename.split("/"); + } + + return filename.split(Pattern.quote(File.separator)); + } + + public HeatStructureTree getTree(){ + return tree; + } +} diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/messages/AuditMessages.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/messages/AuditMessages.java index de39cff30f..387b2046fd 100644 --- a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/messages/AuditMessages.java +++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/messages/AuditMessages.java @@ -30,6 +30,7 @@ public class AuditMessages { public static final String HEAT_VALIDATION_STARTED = "HEAT validation started. VSP Id: "; public static final String HEAT_VALIDATION_COMPLETED = "HEAT validation completed. VSP Id: "; public static final String HEAT_VALIDATION_ERROR = "HEAT validation error: %s. VSP Id: %s"; + public static final String CSAR_VALIDATION_STARTED = "CSAR validation started. VSP Id: "; public static final String HEAT_TRANSLATION_STARTED = "HEAT translation started. VSP Id: "; public static final String HEAT_TRANSLATION_COMPLETED = "HEAT translation completed. VSP Id: "; public static final String ENRICHMENT_ERROR = "Enrichment error: %s. VSP Id: %s"; diff --git a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/external/artifact/ExternalArtifactEnricher.java b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/external/artifact/ExternalArtifactEnricher.java index fb0622cd67..ffc27106bb 100644 --- a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/external/artifact/ExternalArtifactEnricher.java +++ b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/external/artifact/ExternalArtifactEnricher.java @@ -22,7 +22,6 @@ package org.openecomp.sdc.enrichment.impl.external.artifact; import org.openecomp.core.utilities.file.FileUtils; import org.openecomp.core.utilities.json.JsonUtil; -import org.openecomp.sdc.common.utils.CommonUtil; import org.openecomp.sdc.datatypes.error.ErrorMessage; import org.openecomp.sdc.enrichment.inter.Enricher; import org.openecomp.sdc.enrichment.inter.ExternalArtifactEnricherInterface; @@ -30,7 +29,6 @@ import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage; -import java.io.InputStream; import java.lang.reflect.Constructor; import java.util.Collection; import java.util.HashMap; @@ -48,11 +46,9 @@ public class ExternalArtifactEnricher extends Enricher { private static Logger logger = LoggerFactory.getLogger(ExternalArtifactEnricher.class); private static Collection<String> getExternalArtifactEnrichedImplClassesList() { - InputStream externalArtifactEnrichConfigurationJson = - FileUtils.getFileInputStream(EXTERNAL_ARTIFACT_ENRICH_CONF_FILE); @SuppressWarnings("unchecked") - Map<String, String> confFileAsMap = - JsonUtil.json2Object(externalArtifactEnrichConfigurationJson, Map.class); + Map<String, String> confFileAsMap = FileUtils.readViaInputStream(EXTERNAL_ARTIFACT_ENRICH_CONF_FILE, + stream -> JsonUtil.json2Object(stream, Map.class)); return confFileAsMap.values(); } diff --git a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/AbstractSubstituteToscaEnricher.java b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/AbstractSubstituteToscaEnricher.java index 32df165eb3..a7762e86ca 100644 --- a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/AbstractSubstituteToscaEnricher.java +++ b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/AbstractSubstituteToscaEnricher.java @@ -77,7 +77,7 @@ public class AbstractSubstituteToscaEnricher { if (toscaAnalyzerService.isTypeOf(nodeTemplate, VFC_ABSTRACT_SUBSTITUTE, serviceTemplate, toscaModel)) { - String componentDisplayName = getComponentDisplayName(nodeTemplateId); + String componentDisplayName = getComponentDisplayName(nodeTemplateId, nodeTemplate); setProperty(nodeTemplate, VM_TYPE_TAG, componentDisplayName); @@ -157,7 +157,7 @@ public class AbstractSubstituteToscaEnricher { if (toscaAnalyzerService.isTypeOf(nodeTemplate, VFC_ABSTRACT_SUBSTITUTE, serviceTemplate, toscaModel)) { - String componentDisplayName = getComponentDisplayName(nodeTemplateId); + String componentDisplayName = getComponentDisplayName(nodeTemplateId, nodeTemplate); if (componentDisplayNameToNodeTempalteIds.containsKey(componentDisplayName)) { componentDisplayNameToNodeTempalteIds.get(componentDisplayName).add(nodeTemplateId); @@ -206,12 +206,17 @@ public class AbstractSubstituteToscaEnricher { nodeTemplate.setRequirements(requirements); } - private String getComponentDisplayName(String nodeTemplateId ) { + private String getComponentDisplayName(String nodeTemplateId, NodeTemplate nodeTemplate) { String componentDisplayName = null; if (nodeTemplateId.contains(ABSTRACT_NODE_TEMPLATE_ID_PREFIX)) { String removedPrefix = nodeTemplateId.split(ABSTRACT_NODE_TEMPLATE_ID_PREFIX)[1]; final String[] removedSuffix = removedPrefix.split("_\\d"); componentDisplayName = removedSuffix[0]; + } else { + final String type = nodeTemplate.getType(); + final String[] splitted = type.split("\\."); + componentDisplayName = splitted[splitted.length - 1]; + } return componentDisplayName; } diff --git a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/java/org/openecomp/sdc/enrichment/impl/external/artifact/MonitoringMibEnricherTest.java b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/java/org/openecomp/sdc/enrichment/impl/external/artifact/MonitoringMibEnricherTest.java index 38f7a1c56e..5f1a67138d 100644 --- a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/java/org/openecomp/sdc/enrichment/impl/external/artifact/MonitoringMibEnricherTest.java +++ b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/java/org/openecomp/sdc/enrichment/impl/external/artifact/MonitoringMibEnricherTest.java @@ -42,7 +42,6 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.io.File; -import java.io.InputStream; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Collection; @@ -159,8 +158,8 @@ public class MonitoringMibEnricherTest { } private ByteBuffer getMibByteBuffer(String fileName) { - InputStream mibFile = FileUtils.getFileInputStream(this.getClass().getResource(fileName)); - byte[] mibBytes = FileUtils.toByteArray(mibFile); + byte[] mibBytes = FileUtils.readViaInputStream(this.getClass().getResource(fileName), + stream -> FileUtils.toByteArray(stream)); return ByteBuffer.wrap(mibBytes); } diff --git a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/java/org/openecomp/sdc/enrichment/impl/external/artifact/ProcessArtifactEnricherTest.java b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/java/org/openecomp/sdc/enrichment/impl/external/artifact/ProcessArtifactEnricherTest.java index aeefc91aa3..2f839a7946 100644 --- a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/java/org/openecomp/sdc/enrichment/impl/external/artifact/ProcessArtifactEnricherTest.java +++ b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/java/org/openecomp/sdc/enrichment/impl/external/artifact/ProcessArtifactEnricherTest.java @@ -21,14 +21,12 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.io.File; -import java.io.InputStream; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Collection; import static org.mockito.Matchers.anyObject; import static org.mockito.Mockito.atLeastOnce; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.when; public class ProcessArtifactEnricherTest { @@ -112,8 +110,8 @@ public class ProcessArtifactEnricherTest { } private ByteBuffer getMibByteBuffer(String fileName) { - InputStream mibFile = FileUtils.getFileInputStream(this.getClass().getResource(fileName)); - byte[] mibBytes = FileUtils.toByteArray(mibFile); + byte[] mibBytes = FileUtils.readViaInputStream(this.getClass().getResource(fileName), + stream -> FileUtils.toByteArray(stream)); return ByteBuffer.wrap(mibBytes); } } diff --git a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/pom.xml b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/pom.xml index 30c4bde443..b3b7598c11 100644 --- a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/pom.xml @@ -56,5 +56,10 @@ <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> + <dependency> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-tosca-converter-api</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> </dependencies> </project> diff --git a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/zusammen/ServiceModelDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/zusammen/ServiceModelDaoZusammenImpl.java index 575ba856a7..a7fecdd806 100644 --- a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/zusammen/ServiceModelDaoZusammenImpl.java +++ b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/zusammen/ServiceModelDaoZusammenImpl.java @@ -22,9 +22,9 @@ import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.dao.types.VersionStatus; +import org.openecomp.core.converter.datatypes.Constants; import java.io.ByteArrayInputStream; -import java.io.IOException; import java.util.Collection; import java.util.Map; import java.util.Objects; diff --git a/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-api/pom.xml b/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-api/pom.xml new file mode 100644 index 0000000000..87a93ee6dd --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-api/pom.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.8</source> + <target>1.8</target> + </configuration> + </plugin> + </plugins> + </build> + <dependencies> + <dependency> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-sdc-datatypes-lib</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + </dependencies> + + <parent> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-sdc-orchestration-lib</artifactId> + <version>1.1.0-SNAPSHOT</version> + </parent> + + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-sdc-orchesrtation-api</artifactId> + <version>1.1.0-SNAPSHOT</version> + + +</project>
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-core/pom.xml b/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-core/pom.xml new file mode 100644 index 0000000000..343ff0213c --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-core/pom.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.8</source> + <target>1.8</target> + </configuration> + </plugin> + </plugins> + </build> + <dependencies> + <dependency> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-sdc-orchesrtation-api</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.openecomp.sdc.core</groupId> + <artifactId>openecomp-utilities-lib</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + </dependencies> + + <parent> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-sdc-orchestration-lib</artifactId> + <version>1.1.0-SNAPSHOT</version> + </parent> + + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-sdc-orchesrtation-core</artifactId> + <version>1.1.0-SNAPSHOT</version> + + +</project>
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-impl/pom.xml b/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-impl/pom.xml new file mode 100644 index 0000000000..8ecfa0de9e --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-orchestration-lib/openecomp-sdc-orchesrtation-impl/pom.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <dependencies> + <dependency> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-sdc-orchesrtation-api</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-sdc-logging-api</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + </dependencies> + + <parent> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-sdc-orchestration-lib</artifactId> + <version>1.1.0-SNAPSHOT</version> + </parent> + + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-sdc-orchesrtation-impl</artifactId> + <version>1.1.0-SNAPSHOT</version> + + +</project>
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-orchestration-lib/pom.xml b/openecomp-be/lib/openecomp-sdc-orchestration-lib/pom.xml new file mode 100644 index 0000000000..dbcef4da29 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-orchestration-lib/pom.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <artifactId>openecomp-sdc-orchestration-lib</artifactId> + <version>1.1.0-SNAPSHOT</version> + <packaging>pom</packaging> + + <parent> + <artifactId>openecomp-sdc-lib</artifactId> + <groupId>org.openecomp.sdc</groupId> + <version>1.1.0-SNAPSHOT</version> + <relativePath>..</relativePath> + </parent> + + <modules> + <module>openecomp-sdc-orchesrtation-api</module> + <module>openecomp-sdc-orchesrtation-core</module> + <module>openecomp-sdc-orchesrtation-impl</module> + </modules> +</project>
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java index cac3c4ce08..e8fddc3108 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java @@ -20,16 +20,12 @@ package com.att.sdc.translator.services.heattotosca.impl.resourcetranslation; -import static org.junit.Assert.assertEquals; - import org.apache.commons.collections4.MapUtils; import org.junit.Assert; import org.junit.Before; import org.openecomp.core.translator.datatypes.TranslatorOutput; import org.openecomp.core.utilities.file.FileUtils; import org.openecomp.core.utilities.json.JsonUtil; -import org.openecomp.core.validation.api.ValidationManager; -import org.openecomp.core.validation.factory.ValidationManagerFactory; import org.openecomp.core.validation.util.MessageContainerUtil; import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.common.errors.ErrorCategory; @@ -46,9 +42,9 @@ import org.openecomp.sdc.logging.types.LoggerErrorCode; import org.openecomp.sdc.logging.types.LoggerTragetServiceName; import org.openecomp.sdc.tosca.datatypes.model.GroupDefinition; import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; +import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil; import org.openecomp.sdc.tosca.services.ToscaFileOutputService; import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl; -import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil; import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData; @@ -61,7 +57,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStream; import java.net.URL; import java.util.HashMap; import java.util.HashSet; @@ -71,6 +66,8 @@ import java.util.Set; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; +import static org.junit.Assert.assertEquals; + public class BaseResourceTranslationTest { @@ -280,14 +277,14 @@ public class BaseResourceTranslationTest { } else { Assert.fail("Invalid expected output files directory"); } + for (int i = 0; i < fileList.length; i++) { - InputStream serviceTemplateInputStream = FileUtils.getFileInputStream - (BaseResourceTranslationTest.class - .getClassLoader().getResource(baseDirPath + fileList[i])); - ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject - (serviceTemplateInputStream, ServiceTemplate.class); + URL resource = BaseResourceTranslationTest.class.getClassLoader().getResource(baseDirPath + fileList[i]); + ServiceTemplate serviceTemplate = FileUtils.readViaInputStream(resource, + stream -> toscaExtensionYamlUtil.yamlToObject(stream, ServiceTemplate.class)); serviceTemplateMap.put(fileList[i], serviceTemplate); } + } catch (Exception e) { Assert.fail(e.getMessage()); } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java index 0e6610d5cd..c03ca56d49 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java @@ -24,12 +24,15 @@ import org.openecomp.config.api.Configuration; import org.openecomp.config.api.ConfigurationManager; import org.openecomp.core.utilities.CommonMethods; import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.sdc.common.errors.CoreException; +import org.openecomp.sdc.common.errors.ErrorCode; import org.openecomp.sdc.common.utils.SdcCommon; import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration; import org.openecomp.sdc.heat.datatypes.manifest.FileData; import org.openecomp.sdc.heat.datatypes.manifest.ManifestFile; import org.openecomp.sdc.heat.datatypes.model.Resource; import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate; +import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment; import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; import org.openecomp.sdc.tosca.services.ToscaUtil; import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslatedHeatResource; @@ -42,8 +45,6 @@ import org.openecomp.sdc.translator.services.heattotosca.NameExtractor; import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator; import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -67,23 +68,23 @@ public class TranslationContext { Configuration config = ConfigurationManager.lookup(); String propertyFileName = SdcCommon.HEAT_TO_TOSCA_MAPPING_CONF; translationMapping = - config.generateMap(ConfigConstants.MAPPING_NAMESPACE, ConfigConstants.RESOURCE_MAPPING_KEY); + config.generateMap(ConfigConstants.MAPPING_NAMESPACE, ConfigConstants.RESOURCE_MAPPING_KEY); try { globalServiceTemplates = GlobalTypesGenerator.getGlobalTypesServiceTemplate(); } catch (Exception exc) { throw new RuntimeException("Failed to load GlobalTypes", exc); } nameExtractorImplMap = config.populateMap(ConfigConstants.TRANSLATOR_NAMESPACE, - ConfigConstants.NAMING_CONVENTION_EXTRACTOR_IMPL_KEY, ImplementationConfiguration.class); + ConfigConstants.NAMING_CONVENTION_EXTRACTOR_IMPL_KEY, ImplementationConfiguration.class); supportedConsolidationComputeResources = config.populateMap(ConfigConstants - .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants - .SUPPORTED_CONSOLIDATION_COMPUTE_RESOURCES_KEY, ImplementationConfiguration.class); + .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants + .SUPPORTED_CONSOLIDATION_COMPUTE_RESOURCES_KEY, ImplementationConfiguration.class); supportedConsolidationPortResources = config.populateMap(ConfigConstants - .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants - .SUPPORTED_CONSOLIDATION_PORT_RESOURCES_KEY, ImplementationConfiguration.class); + .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants + .SUPPORTED_CONSOLIDATION_PORT_RESOURCES_KEY, ImplementationConfiguration.class); enrichPortResourceProperties = config.getAsStringValues(ConfigConstants - .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants - .ENRICH_PORT_RESOURCE_PROP); + .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants + .ENRICH_PORT_RESOURCE_PROP); } @@ -118,15 +119,18 @@ public class TranslationContext { private Map<String, UnifiedSubstitutionData> unifiedSubstitutionData = new HashMap<>(); private Set<String> unifiedHandledServiceTemplates = new HashSet<>(); + private Map<String, Map<RequirementAssignment, String>> + mapDependencySubMappingToRequirementAssignment = new HashMap<>(); + public static Map<String, ImplementationConfiguration> getSupportedConsolidationComputeResources() { return supportedConsolidationComputeResources; } public static void setSupportedConsolidationComputeResources( - Map<String, ImplementationConfiguration> supportedConsolidationComputeResources) { + Map<String, ImplementationConfiguration> supportedConsolidationComputeResources) { TranslationContext.supportedConsolidationComputeResources = - supportedConsolidationComputeResources; + supportedConsolidationComputeResources; } public static Map<String, ImplementationConfiguration> getSupportedConsolidationPortResources() { @@ -134,7 +138,7 @@ public class TranslationContext { } public static void setSupportedConsolidationPortResources( - Map<String, ImplementationConfiguration> supportedConsolidationPortResources) { + Map<String, ImplementationConfiguration> supportedConsolidationPortResources) { TranslationContext.supportedConsolidationPortResources = supportedConsolidationPortResources; } @@ -146,7 +150,7 @@ public class TranslationContext { */ public static NameExtractor getNameExtractorImpl(String extractorImplKey) { String nameExtractorImplClassName = - nameExtractorImplMap.get(extractorImplKey).getImplementationClass(); + nameExtractorImplMap.get(extractorImplKey).getImplementationClass(); return CommonMethods.newInstance(nameExtractorImplClassName, NameExtractor.class); } @@ -156,7 +160,7 @@ public class TranslationContext { } public void setUnifiedSubstitutionData( - Map<String, UnifiedSubstitutionData> unifiedSubstitutionData) { + Map<String, UnifiedSubstitutionData> unifiedSubstitutionData) { this.unifiedSubstitutionData = unifiedSubstitutionData; } @@ -166,14 +170,14 @@ public class TranslationContext { NodeTemplate nodeTemplate) { this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData()); this.unifiedSubstitutionData - .get(serviceTemplateName) - .addCleanedNodeTemplate(nodeTemplateId, unifiedCompositionEntity, nodeTemplate); + .get(serviceTemplateName) + .addCleanedNodeTemplate(nodeTemplateId, unifiedCompositionEntity, nodeTemplate); } public NodeTemplate getCleanedNodeTemplate(String serviceTemplateName, String nodeTemplateId) { return this.unifiedSubstitutionData.get(serviceTemplateName) - .getCleanedNodeTemplate(nodeTemplateId); + .getCleanedNodeTemplate(nodeTemplateId); } public void addUnifiedNestedNodeTemplateId(String serviceTemplateName, @@ -181,13 +185,13 @@ public class TranslationContext { String unifiedNestedNodeTemplateId) { this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData()); this.unifiedSubstitutionData.get(serviceTemplateName) - .addUnifiedNestedNodeTemplateId(nestedNodeTemplateId, unifiedNestedNodeTemplateId); + .addUnifiedNestedNodeTemplateId(nestedNodeTemplateId, unifiedNestedNodeTemplateId); } public Optional<String> getUnifiedNestedNodeTemplateId(String serviceTemplateName, String nestedNodeTemplateId) { return this.unifiedSubstitutionData.get(serviceTemplateName) == null ? Optional.empty() - : this.unifiedSubstitutionData.get(serviceTemplateName) + : this.unifiedSubstitutionData.get(serviceTemplateName) .getUnifiedNestedNodeTemplateId(nestedNodeTemplateId); } @@ -196,13 +200,13 @@ public class TranslationContext { String unifiedNestedNodeTypeId) { this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData()); this.unifiedSubstitutionData.get(serviceTemplateName) - .addUnifiedNestedNodeTypeId(nestedNodeTypeId, unifiedNestedNodeTypeId); + .addUnifiedNestedNodeTypeId(nestedNodeTypeId, unifiedNestedNodeTypeId); } public Optional<String> getUnifiedNestedNodeTypeId(String serviceTemplateName, String nestedNodeTemplateId) { return this.unifiedSubstitutionData.get(serviceTemplateName) == null ? Optional.empty() - : this.unifiedSubstitutionData.get(serviceTemplateName) + : this.unifiedSubstitutionData.get(serviceTemplateName) .getUnifiedNestedNodeTypeId(nestedNodeTemplateId); } @@ -259,12 +263,12 @@ public class TranslationContext { } public Set<String> getAllTranslatedResourceIdsFromDiffNestedFiles(String - nestedHeatFileNameToSkip){ + nestedHeatFileNameToSkip){ Set<String> allTranslatedResourceIds = new HashSet<>(); this.translatedIds.entrySet().stream().filter( - heatFileNameToTranslatedIdsEntry -> !heatFileNameToTranslatedIdsEntry.getKey() - .equals(nestedHeatFileNameToSkip)).forEach(heatFileNameToTranslatedIdsEntry -> { + heatFileNameToTranslatedIdsEntry -> !heatFileNameToTranslatedIdsEntry.getKey() + .equals(nestedHeatFileNameToSkip)).forEach(heatFileNameToTranslatedIdsEntry -> { allTranslatedResourceIds.addAll(heatFileNameToTranslatedIdsEntry.getValue().keySet()); }); @@ -325,7 +329,7 @@ public class TranslationContext { public void addHeatSharedResourcesByParam(String parameterName, String resourceId, Resource resource) { this.addHeatSharedResourcesByParam(parameterName, - new TranslatedHeatResource(resourceId, resource)); + new TranslatedHeatResource(resourceId, resource)); } private void addHeatSharedResourcesByParam(String parameterName, @@ -351,7 +355,7 @@ public class TranslationContext { } public void addUsedHeatPseudoParams(String heatFileName, String heatPseudoParam, String - translatedToscaParam) { + translatedToscaParam) { if (Objects.isNull(this.usedHeatPseudoParams.get(heatFileName))) { this.usedHeatPseudoParams.put(heatFileName, new HashMap<>()); } @@ -371,15 +375,22 @@ public class TranslationContext { String abstractNodeTemplateId) { Map<String, String> nodeAbstractNodeTemplateIdMap = this.getUnifiedSubstitutionData() - .computeIfAbsent(serviceTemplateFileName, k -> new UnifiedSubstitutionData()) - .getNodesRelatedAbstractNode(); + .computeIfAbsent(serviceTemplateFileName, k -> new UnifiedSubstitutionData()) + .getNodesRelatedAbstractNode(); if (nodeAbstractNodeTemplateIdMap == null) { nodeAbstractNodeTemplateIdMap = new HashMap<>(); } + + if(nodeAbstractNodeTemplateIdMap.containsKey(originalNodeTemplateId)){ + throw new CoreException((new ErrorCode.ErrorCodeBuilder()) + .withMessage("Resource with id " + + originalNodeTemplateId + " occures more than once in different addOn files") + .build()); + } nodeAbstractNodeTemplateIdMap.put(originalNodeTemplateId, abstractNodeTemplateId); this.getUnifiedSubstitutionData().get(serviceTemplateFileName).setNodesRelatedAbstractNode( - nodeAbstractNodeTemplateIdMap); + nodeAbstractNodeTemplateIdMap); } /** @@ -392,23 +403,23 @@ public class TranslationContext { * service template */ public void addSubstitutionServiceTemplateUnifiedSubstitutionData( - String serviceTemplateFileName, - String originalNodeTemplateId, - String substitutionServiceTemplateNodeTemplateId) { + String serviceTemplateFileName, + String originalNodeTemplateId, + String substitutionServiceTemplateNodeTemplateId) { Map<String, String> nodesRelatedSubstitutionServiceTemplateNodeTemplateIdMap = this - .getUnifiedSubstitutionData() - .computeIfAbsent(serviceTemplateFileName, k -> new UnifiedSubstitutionData()) - .getNodesRelatedSubstitutionServiceTemplateNode(); + .getUnifiedSubstitutionData() + .computeIfAbsent(serviceTemplateFileName, k -> new UnifiedSubstitutionData()) + .getNodesRelatedSubstitutionServiceTemplateNode(); if (nodesRelatedSubstitutionServiceTemplateNodeTemplateIdMap == null) { nodesRelatedSubstitutionServiceTemplateNodeTemplateIdMap = new HashMap<>(); } nodesRelatedSubstitutionServiceTemplateNodeTemplateIdMap.put(originalNodeTemplateId, - substitutionServiceTemplateNodeTemplateId); + substitutionServiceTemplateNodeTemplateId); this.getUnifiedSubstitutionData().get(serviceTemplateFileName) - .setNodesRelatedSubstitutionServiceTemplateNode( - nodesRelatedSubstitutionServiceTemplateNodeTemplateIdMap); + .setNodesRelatedSubstitutionServiceTemplateNode( + nodesRelatedSubstitutionServiceTemplateNodeTemplateIdMap); } /** @@ -420,7 +431,7 @@ public class TranslationContext { public String getUnifiedAbstractNodeTemplateId(ServiceTemplate serviceTemplate, String nodeTemplateId) { UnifiedSubstitutionData unifiedSubstitutionData = - this.unifiedSubstitutionData.get(ToscaUtil.getServiceTemplateFileName(serviceTemplate)); + this.unifiedSubstitutionData.get(ToscaUtil.getServiceTemplateFileName(serviceTemplate)); return unifiedSubstitutionData.getNodesRelatedAbstractNode().get(nodeTemplateId); } @@ -434,26 +445,26 @@ public class TranslationContext { public String getUnifiedSubstitutionNodeTemplateId(ServiceTemplate serviceTemplate, String nodeTemplateId) { UnifiedSubstitutionData unifiedSubstitutionData = - this.unifiedSubstitutionData.get(ToscaUtil.getServiceTemplateFileName(serviceTemplate)); + this.unifiedSubstitutionData.get(ToscaUtil.getServiceTemplateFileName(serviceTemplate)); return unifiedSubstitutionData.getNodesRelatedSubstitutionServiceTemplateNode() - .get(nodeTemplateId); + .get(nodeTemplateId); } public int getHandledNestedComputeNodeTemplateIndex(String serviceTemplateName, String computeType) { return this.unifiedSubstitutionData.get(serviceTemplateName) - .getHandledNestedComputeNodeTemplateIndex(computeType); + .getHandledNestedComputeNodeTemplateIndex(computeType); } public void updateHandledComputeType(String serviceTemplateName, String handledComputeType, String nestedServiceTemplateFileName) { String globalSTName = - ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME); + ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME); this.unifiedSubstitutionData.putIfAbsent( - globalSTName, new UnifiedSubstitutionData()); + globalSTName, new UnifiedSubstitutionData()); this.unifiedSubstitutionData.get(globalSTName) - .addHandledComputeType(handledComputeType); + .addHandledComputeType(handledComputeType); this.unifiedSubstitutionData.get(globalSTName).addHandlesNestedServiceTemplate(nestedServiceTemplateFileName); this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData()); @@ -469,15 +480,15 @@ public class TranslationContext { public boolean isComputeTypeHandledInServiceTemplate(String serviceTemplateName, String computeType) { return !Objects.isNull(this.unifiedSubstitutionData.get(serviceTemplateName)) - && this.unifiedSubstitutionData.get(serviceTemplateName) - .isComputeTypeHandledInServiceTemplate(computeType); + && this.unifiedSubstitutionData.get(serviceTemplateName) + .isComputeTypeHandledInServiceTemplate(computeType); } public int getHandledNestedComputeNodeTemplateIndex(String serviceTemplateName, String nestedServiceTemplateName, String computeType){ return this.unifiedSubstitutionData.get(serviceTemplateName) - .getHandledNestedComputeNodeTemplateIndex(computeType); + .getHandledNestedComputeNodeTemplateIndex(computeType); } public boolean isNestedServiceTemplateWasHandled(String serviceTemplateName, @@ -486,13 +497,13 @@ public class TranslationContext { return false; } return this.unifiedSubstitutionData.get(serviceTemplateName) - .isNestedServiceTemplateWasHandled(nestedServiceTemplateFileName); + .isNestedServiceTemplateWasHandled(nestedServiceTemplateFileName); } public Set<String> getAllRelatedNestedNodeTypeIds(){ String globalName = "GlobalSubstitutionTypes"; if(Objects.isNull(this.unifiedSubstitutionData) || - Objects.isNull(this.unifiedSubstitutionData.get(globalName))){ + Objects.isNull(this.unifiedSubstitutionData.get(globalName))){ return new HashSet<>(); } @@ -520,14 +531,14 @@ public class TranslationContext { return false; } return this.unifiedSubstitutionData.get(serviceTemplateName) - .isNestedNodeWasHandled(nestedNodeTemplateId); + .isNestedNodeWasHandled(nestedNodeTemplateId); } public void addNestedNodeAsHandled(String serviceTemplateName, String nestedNodeTemplateId) { this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData()); this.unifiedSubstitutionData.get(serviceTemplateName) - .addHandledNestedNodes(nestedNodeTemplateId); + .addHandledNestedNodes(nestedNodeTemplateId); } public void updateUsedTimesForNestedComputeNodeType(String serviceTemplateName, @@ -535,7 +546,7 @@ public class TranslationContext { this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData()); this.unifiedSubstitutionData.get(serviceTemplateName) - .updateUsedTimesForNestedComputeNodeType(computeType); + .updateUsedTimesForNestedComputeNodeType(computeType); } public int getGlobalNodeTypeIndex(String serviceTemplateName, @@ -544,7 +555,7 @@ public class TranslationContext { return 0; } return this.unifiedSubstitutionData.get(serviceTemplateName).getGlobalNodeTypeIndex - (computeType); + (computeType); } public void addNewPropertyIdToNodeTemplate(String serviceTemplateName, @@ -552,7 +563,7 @@ public class TranslationContext { Object origPropertyValue){ this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData()); this.unifiedSubstitutionData.get(serviceTemplateName).addNewPropertyIdToNodeTemplate( - newPropertyId, origPropertyValue); + newPropertyId, origPropertyValue); } public Optional<Object> getNewPropertyInputParamId(String serviceTemplateName, @@ -562,7 +573,7 @@ public class TranslationContext { } return this.unifiedSubstitutionData.get(serviceTemplateName).getNewPropertyInputParam - (newPropertyId); + (newPropertyId); } public Map<String, Object> getAllNewPropertyInputParamIdsPerNodeTenplateId(String serviceTemplateName){ @@ -574,5 +585,27 @@ public class TranslationContext { } + public void addSubMappingReqAssignment(String serviceTemplateName, + RequirementAssignment requirementAssignment, + String newReqId){ + this.mapDependencySubMappingToRequirementAssignment + .putIfAbsent(serviceTemplateName, new HashMap<>()); + this.mapDependencySubMappingToRequirementAssignment.get(serviceTemplateName) + .putIfAbsent(requirementAssignment, newReqId); + } + + public Optional<String> getNewReqAssignmentDependencyId(String serviceTemplateName, + RequirementAssignment requirementAssignment){ + if(!this.mapDependencySubMappingToRequirementAssignment.containsKey(serviceTemplateName)){ + return Optional.empty(); + } + + Map<RequirementAssignment, String> requirementAssignmentMap = + this.mapDependencySubMappingToRequirementAssignment.get(serviceTemplateName); + return requirementAssignmentMap.containsKey + (requirementAssignment) ? Optional.of(requirementAssignmentMap.get(requirementAssignment)) : + Optional.empty(); + } + } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java index 4e92372b7e..b0bac3b834 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java @@ -57,41 +57,41 @@ public class ConsolidationDataUtil { * @return the compute template consolidation data */ public static ComputeTemplateConsolidationData getComputeTemplateConsolidationData( - TranslationContext context, - ServiceTemplate serviceTemplate, - String computeNodeType, - String computeNodeTemplateId) { + TranslationContext context, + ServiceTemplate serviceTemplate, + String computeNodeType, + String computeNodeTemplateId) { ConsolidationData consolidationData = context.getConsolidationData(); String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate); ComputeConsolidationData computeConsolidationData = consolidationData - .getComputeConsolidationData(); + .getComputeConsolidationData(); FileComputeConsolidationData fileComputeConsolidationData = computeConsolidationData - .getFileComputeConsolidationData(serviceTemplateFileName); + .getFileComputeConsolidationData(serviceTemplateFileName); if (fileComputeConsolidationData == null) { fileComputeConsolidationData = new FileComputeConsolidationData(); computeConsolidationData.setFileComputeConsolidationData(serviceTemplateFileName, - fileComputeConsolidationData); + fileComputeConsolidationData); } TypeComputeConsolidationData typeComputeConsolidationData = fileComputeConsolidationData - .getTypeComputeConsolidationData(computeNodeType); + .getTypeComputeConsolidationData(computeNodeType); if (typeComputeConsolidationData == null) { typeComputeConsolidationData = new TypeComputeConsolidationData(); fileComputeConsolidationData.setTypeComputeConsolidationData(computeNodeType, - typeComputeConsolidationData); + typeComputeConsolidationData); } ComputeTemplateConsolidationData computeTemplateConsolidationData = - typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId); + typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId); if (computeTemplateConsolidationData == null) { computeTemplateConsolidationData = new ComputeTemplateConsolidationData(); computeTemplateConsolidationData.setNodeTemplateId(computeNodeTemplateId); typeComputeConsolidationData.setComputeTemplateConsolidationData(computeNodeTemplateId, - computeTemplateConsolidationData); + computeTemplateConsolidationData); } return computeTemplateConsolidationData; @@ -107,9 +107,9 @@ public class ConsolidationDataUtil { * @return the port template consolidation data */ public static PortTemplateConsolidationData getPortTemplateConsolidationData( - TranslationContext context, - ServiceTemplate serviceTemplate, - String portNodeTemplateId) { + TranslationContext context, + ServiceTemplate serviceTemplate, + String portNodeTemplateId) { ConsolidationData consolidationData = context.getConsolidationData(); String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate); @@ -117,21 +117,21 @@ public class ConsolidationDataUtil { PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData(); FilePortConsolidationData filePortConsolidationData = portConsolidationData - .getFilePortConsolidationData(serviceTemplateFileName); + .getFilePortConsolidationData(serviceTemplateFileName); if (filePortConsolidationData == null) { filePortConsolidationData = new FilePortConsolidationData(); portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName, - filePortConsolidationData); + filePortConsolidationData); } PortTemplateConsolidationData portTemplateConsolidationData = - filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId); + filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId); if (portTemplateConsolidationData == null) { portTemplateConsolidationData = new PortTemplateConsolidationData(); portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId); filePortConsolidationData.setPortTemplateConsolidationData(portNodeTemplateId, - portTemplateConsolidationData); + portTemplateConsolidationData); } return portTemplateConsolidationData; @@ -147,40 +147,40 @@ public class ConsolidationDataUtil { *@param nestedNodeTemplateId the nested node template id @return the nested template consolidation data */ public static NestedTemplateConsolidationData getNestedTemplateConsolidationData( - TranslationContext context, - ServiceTemplate serviceTemplate, - String nestedHeatFileName, String nestedNodeTemplateId) { + TranslationContext context, + ServiceTemplate serviceTemplate, + String nestedHeatFileName, String nestedNodeTemplateId) { if(isNestedResourceIdOccuresInDifferentNestedFiles(context, nestedHeatFileName, - nestedNodeTemplateId)){ + nestedNodeTemplateId)){ throw new CoreException((new ErrorCode.ErrorCodeBuilder()) - .withMessage("Resource with id " - + nestedNodeTemplateId + " occures more than once in different addOn " - + "files").build()); + .withMessage("Resource with id " + + nestedNodeTemplateId + " occures more than once in different addOn " + + "files").build()); } ConsolidationData consolidationData = context.getConsolidationData(); String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate); NestedConsolidationData nestedConsolidationData = consolidationData - .getNestedConsolidationData(); + .getNestedConsolidationData(); FileNestedConsolidationData fileNestedConsolidationData = nestedConsolidationData - .getFileNestedConsolidationData(serviceTemplateFileName); + .getFileNestedConsolidationData(serviceTemplateFileName); if (fileNestedConsolidationData == null) { fileNestedConsolidationData = new FileNestedConsolidationData(); nestedConsolidationData.setFileNestedConsolidationData(serviceTemplateFileName, - fileNestedConsolidationData); + fileNestedConsolidationData); } NestedTemplateConsolidationData nestedTemplateConsolidationData = - fileNestedConsolidationData.getNestedTemplateConsolidationData(nestedNodeTemplateId); + fileNestedConsolidationData.getNestedTemplateConsolidationData(nestedNodeTemplateId); if (nestedTemplateConsolidationData == null) { nestedTemplateConsolidationData = new NestedTemplateConsolidationData(); nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId); fileNestedConsolidationData.setNestedTemplateConsolidationData(nestedNodeTemplateId, - nestedTemplateConsolidationData); + nestedTemplateConsolidationData); } return nestedTemplateConsolidationData; @@ -199,7 +199,7 @@ public class ConsolidationDataUtil { * @param translatedGroupId Group id of which compute node is a part */ public static void updateGroupIdInConsolidationData(EntityConsolidationData - entityConsolidationData, + entityConsolidationData, String translatedGroupId) { if (entityConsolidationData.getGroupIds() == null) { entityConsolidationData.setGroupIds(new ArrayList<>()); @@ -220,12 +220,12 @@ public class ConsolidationDataUtil { String computeNodeTemplateId, String requirementId, RequirementAssignment - requirementAssignment) { + requirementAssignment) { TranslationContext translationContext = translateTo.getContext(); ServiceTemplate serviceTemplate = translateTo.getServiceTemplate(); ComputeTemplateConsolidationData computeTemplateConsolidationData = - getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeType, - computeNodeTemplateId); + getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeType, + computeNodeTemplateId); computeTemplateConsolidationData.addVolume(requirementId, requirementAssignment); } @@ -243,8 +243,8 @@ public class ConsolidationDataUtil { TranslationContext translationContext = translateTo.getContext(); ServiceTemplate serviceTemplate = translateTo.getServiceTemplate(); ComputeTemplateConsolidationData computeTemplateConsolidationData = - getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeNodeType, - translateTo.getTranslatedId()); + getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeNodeType, + translateTo.getTranslatedId()); computeTemplateConsolidationData.addPort(getPortType(portNodeTemplateId), portNodeTemplateId); // create port in consolidation data getPortTemplateConsolidationData(translationContext, serviceTemplate, portNodeTemplateId); @@ -264,34 +264,42 @@ public class ConsolidationDataUtil { RequirementAssignment requirementAssignment) { ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER; HeatOrchestrationTemplate heatOrchestrationTemplate = translateTo - .getHeatOrchestrationTemplate(); + .getHeatOrchestrationTemplate(); TranslationContext translationContext = translateTo.getContext(); consolidationEntityType.setEntityType(heatOrchestrationTemplate, sourceResource, - targetResource, translateTo.getContext()); + targetResource, translateTo.getContext()); // Add resource dependency information in nodesConnectedIn if the target node // is a consolidation entity if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())) { ConsolidationDataUtil.updateNodesConnectedIn(translateTo, - nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId, - requirementId, requirementAssignment); + nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId, + requirementId, requirementAssignment); } //Add resource dependency information in nodesConnectedOut if the source node //is a consolidation entity if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())) { ConsolidationDataUtil.updateNodesConnectedOut(translateTo, - requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(), - requirementId, requirementAssignment); + requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(), + requirementId, requirementAssignment); + ConsolidationDataUtil.updateNodesConnectedOut(translateTo, + requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(), + requirementId + "_" + nodeTemplateId, requirementAssignment); + + translationContext.addSubMappingReqAssignment(ToscaUtil.getServiceTemplateFileName + (translateTo.getServiceTemplate()), + requirementAssignment, requirementId + "_" + nodeTemplateId); + } } private static boolean isConsolidationEntity(ConsolidationEntityType consolidationEntityType) { return (consolidationEntityType == ConsolidationEntityType.COMPUTE - || consolidationEntityType == ConsolidationEntityType.PORT - || consolidationEntityType == ConsolidationEntityType.NESTED - || consolidationEntityType == ConsolidationEntityType.VFC_NESTED); + || consolidationEntityType == ConsolidationEntityType.PORT + || consolidationEntityType == ConsolidationEntityType.NESTED + || consolidationEntityType == ConsolidationEntityType.VFC_NESTED); } /** @@ -312,18 +320,18 @@ public class ConsolidationDataUtil { TranslationContext translationContext = translateTo.getContext(); ServiceTemplate serviceTemplate = translateTo.getServiceTemplate(); RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData( - requirementId, requirementAssignment); + requirementId, requirementAssignment); if (consolidationEntityType == ConsolidationEntityType.COMPUTE) { String nodeType = DataModelUtil.getNodeTemplate(serviceTemplate, translateTo - .getTranslatedId()).getType(); + .getTranslatedId()).getType(); entityConsolidationData = getComputeTemplateConsolidationData(translationContext, - serviceTemplate, nodeType, translateTo.getTranslatedId()); + serviceTemplate, nodeType, translateTo.getTranslatedId()); } else if (consolidationEntityType == ConsolidationEntityType.PORT) { entityConsolidationData = getPortTemplateConsolidationData(translationContext, - serviceTemplate, translateTo.getTranslatedId()); + serviceTemplate, translateTo.getTranslatedId()); } else if (consolidationEntityType == ConsolidationEntityType.VFC_NESTED - || consolidationEntityType == ConsolidationEntityType.NESTED) { + || consolidationEntityType == ConsolidationEntityType.NESTED) { //ConnectedOut data for nested is not updated return; } @@ -333,8 +341,8 @@ public class ConsolidationDataUtil { } entityConsolidationData.getNodesConnectedOut() - .computeIfAbsent(nodeTemplateId, k -> new ArrayList<>()) - .add(requirementAssignmentData); + .computeIfAbsent(nodeTemplateId, k -> new ArrayList<>()) + .add(requirementAssignmentData); } /** @@ -355,34 +363,34 @@ public class ConsolidationDataUtil { TranslationContext translationContext = translateTo.getContext(); ServiceTemplate serviceTemplate = translateTo.getServiceTemplate(); RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData( - requirementId, requirementAssignment); + requirementId, requirementAssignment); String dependentNodeTemplateId = requirementAssignment.getNode(); if (consolidationEntityType == ConsolidationEntityType.COMPUTE) { NodeTemplate computeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, - dependentNodeTemplateId); + dependentNodeTemplateId); String nodeType = null; if (Objects.isNull(computeNodeTemplate)) { Resource targetResource = - translateTo.getHeatOrchestrationTemplate().getResources().get(targetResourceId); + translateTo.getHeatOrchestrationTemplate().getResources().get(targetResourceId); NameExtractor nodeTypeNameExtractor = - translateTo.getContext().getNameExtractorImpl(targetResource.getType()); + translateTo.getContext().getNameExtractorImpl(targetResource.getType()); nodeType = - nodeTypeNameExtractor.extractNodeTypeName(translateTo.getHeatOrchestrationTemplate() - .getResources().get(dependentNodeTemplateId), - dependentNodeTemplateId, dependentNodeTemplateId); + nodeTypeNameExtractor.extractNodeTypeName(translateTo.getHeatOrchestrationTemplate() + .getResources().get(dependentNodeTemplateId), + dependentNodeTemplateId, dependentNodeTemplateId); } else { nodeType = computeNodeTemplate.getType(); } entityConsolidationData = getComputeTemplateConsolidationData(translationContext, - serviceTemplate, nodeType, dependentNodeTemplateId); + serviceTemplate, nodeType, dependentNodeTemplateId); } else if (consolidationEntityType == ConsolidationEntityType.PORT) { entityConsolidationData = getPortTemplateConsolidationData(translationContext, - serviceTemplate, dependentNodeTemplateId); + serviceTemplate, dependentNodeTemplateId); } else if (consolidationEntityType == ConsolidationEntityType.NESTED - || consolidationEntityType == ConsolidationEntityType.VFC_NESTED) { + || consolidationEntityType == ConsolidationEntityType.VFC_NESTED) { entityConsolidationData = getNestedTemplateConsolidationData(translationContext, - serviceTemplate, translateTo.getHeatFileName(), dependentNodeTemplateId); + serviceTemplate, translateTo.getHeatFileName(), dependentNodeTemplateId); } if (entityConsolidationData.getNodesConnectedIn() == null) { @@ -390,8 +398,8 @@ public class ConsolidationDataUtil { } entityConsolidationData.getNodesConnectedIn() - .computeIfAbsent(sourceNodeTemplateId, k -> new ArrayList<>()) - .add(requirementAssignmentData); + .computeIfAbsent(sourceNodeTemplateId, k -> new ArrayList<>()) + .add(requirementAssignmentData); } @@ -406,7 +414,7 @@ public class ConsolidationDataUtil { String resourceId) { String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType(); Map<String, ImplementationConfiguration> supportedComputeResources = TranslationContext - .getSupportedConsolidationComputeResources(); + .getSupportedConsolidationComputeResources(); if (supportedComputeResources.containsKey(resourceType)) { if (supportedComputeResources.get(resourceType).isEnable()) { return true; @@ -425,7 +433,7 @@ public class ConsolidationDataUtil { public static boolean isComputeResource(Resource resource) { String resourceType = resource.getType(); Map<String, ImplementationConfiguration> supportedComputeResources = TranslationContext - .getSupportedConsolidationComputeResources(); + .getSupportedConsolidationComputeResources(); if (supportedComputeResources.containsKey(resourceType)) { if (supportedComputeResources.get(resourceType).isEnable()) { return true; @@ -446,7 +454,7 @@ public class ConsolidationDataUtil { String resourceId) { String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType(); Map<String, ImplementationConfiguration> supportedPortResources = TranslationContext - .getSupportedConsolidationPortResources(); + .getSupportedConsolidationPortResources(); if (supportedPortResources.containsKey(resourceType)) { if (supportedPortResources.get(resourceType).isEnable()) { return true; @@ -465,7 +473,7 @@ public class ConsolidationDataUtil { public static boolean isPortResource(Resource resource) { String resourceType = resource.getType(); Map<String, ImplementationConfiguration> supportedPortResources = TranslationContext - .getSupportedConsolidationPortResources(); + .getSupportedConsolidationPortResources(); if (supportedPortResources.containsKey(resourceType)) { if (supportedPortResources.get(resourceType).isEnable()) { return true; @@ -486,8 +494,8 @@ public class ConsolidationDataUtil { String resourceId) { String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType(); return (resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource()) - || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE - .getHeatResource())); + || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE + .getHeatResource())); } /** @@ -499,8 +507,8 @@ public class ConsolidationDataUtil { public static boolean isVolumeResource(Resource resource) { String resourceType = resource.getType(); return (resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource()) - || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE - .getHeatResource())); + || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE + .getHeatResource())); } /** @@ -541,7 +549,7 @@ public class ConsolidationDataUtil { TranslationContext context = translateTo.getContext(); ServiceTemplate serviceTemplate = translateTo.getServiceTemplate(); getNestedTemplateConsolidationData( - context, serviceTemplate, translateTo.getHeatFileName(), translateTo.getTranslatedId()); + context, serviceTemplate, translateTo.getHeatFileName(), translateTo.getTranslatedId()); } public static void removeSharedResource(ServiceTemplate serviceTemplate, @@ -551,23 +559,23 @@ public class ConsolidationDataUtil { String contrailSharedResourceId, String sharedTranslatedResourceId) { if (ConsolidationDataUtil.isComputeResource(heatOrchestrationTemplate, - contrailSharedResourceId)) { + contrailSharedResourceId)) { NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, - sharedTranslatedResourceId); + sharedTranslatedResourceId); EntityConsolidationData entityConsolidationData = getComputeTemplateConsolidationData( - context, serviceTemplate, nodeTemplate.getType(), sharedTranslatedResourceId); + context, serviceTemplate, nodeTemplate.getType(), sharedTranslatedResourceId); List<GetAttrFuncData> getAttrFuncDataList = entityConsolidationData - .getOutputParametersGetAttrIn(); + .getOutputParametersGetAttrIn(); removeParamNameFromAttrFuncList(paramName, getAttrFuncDataList); } if (ConsolidationDataUtil.isPortResource(heatOrchestrationTemplate, - contrailSharedResourceId)) { + contrailSharedResourceId)) { NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, - sharedTranslatedResourceId); + sharedTranslatedResourceId); EntityConsolidationData entityConsolidationData = getPortTemplateConsolidationData(context, - serviceTemplate, sharedTranslatedResourceId); + serviceTemplate, sharedTranslatedResourceId); List<GetAttrFuncData> getAttrFuncDataList = entityConsolidationData - .getOutputParametersGetAttrIn(); + .getOutputParametersGetAttrIn(); removeParamNameFromAttrFuncList(paramName, getAttrFuncDataList); } } @@ -604,7 +612,7 @@ public class ConsolidationDataUtil { } public static void updateOutputGetAttributeInConsolidationData(EntityConsolidationData - entityConsolidationData, + entityConsolidationData, String outputParameterName, String attributeName) { diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java index 4934fa7a3a..876e524d96 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java @@ -35,6 +35,7 @@ import org.apache.commons.lang3.tuple.Pair; import org.openecomp.config.api.Configuration; import org.openecomp.config.api.ConfigurationManager; import org.openecomp.core.utilities.CommonMethods; +import org.openecomp.core.utilities.json.JsonUtil; import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration; import org.openecomp.sdc.heat.services.HeatConstants; import org.openecomp.sdc.logging.api.Logger; @@ -56,6 +57,7 @@ import org.openecomp.sdc.tosca.datatypes.model.PropertyDefinition; import org.openecomp.sdc.tosca.datatypes.model.PropertyType; import org.openecomp.sdc.tosca.datatypes.model.RelationshipTemplate; import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment; +import org.openecomp.sdc.tosca.datatypes.model.RequirementDefinition; import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; import org.openecomp.sdc.tosca.datatypes.model.SubstitutionMapping; import org.openecomp.sdc.tosca.datatypes.model.heatextend.PropertyTypeExt; @@ -95,27 +97,27 @@ import java.util.regex.Pattern; public class UnifiedCompositionService { protected static Logger logger = - (Logger) LoggerFactory.getLogger(UnifiedCompositionService.class); + (Logger) LoggerFactory.getLogger(UnifiedCompositionService.class); protected static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); private static Map<String, ImplementationConfiguration> unifiedCompositionImplMap; static { Configuration config = ConfigurationManager.lookup(); unifiedCompositionImplMap = - config.populateMap(ConfigConstants.MANDATORY_UNIFIED_MODEL_NAMESPACE, - ConfigConstants.UNIFIED_COMPOSITION_IMPL_KEY, ImplementationConfiguration.class); + config.populateMap(ConfigConstants.MANDATORY_UNIFIED_MODEL_NAMESPACE, + ConfigConstants.UNIFIED_COMPOSITION_IMPL_KEY, ImplementationConfiguration.class); } private ConsolidationService consolidationService = new ConsolidationService(); private static List<EntityConsolidationData> getPortConsolidationDataList( - Set<String> portIds, - List<UnifiedCompositionData> unifiedCompositionDataList) { + Set<String> portIds, + List<UnifiedCompositionData> unifiedCompositionDataList) { List<EntityConsolidationData> portConsolidationDataList = new ArrayList<>(); for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) { for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData - .getPortTemplateConsolidationDataList()) { + .getPortTemplateConsolidationDataList()) { if (portIds.contains(portTemplateConsolidationData.getNodeTemplateId())) { portConsolidationDataList.add(portTemplateConsolidationData); } @@ -146,8 +148,8 @@ public class UnifiedCompositionService { return; } unifiedCompositionInstance.get() - .createUnifiedComposition(serviceTemplate, nestedServiceTemplate, - unifiedCompositionDataList, context); + .createUnifiedComposition(serviceTemplate, nestedServiceTemplate, + unifiedCompositionDataList, context); mdcDataDebugMessage.debugExitMessage(null, null); } @@ -164,41 +166,59 @@ public class UnifiedCompositionService { * @return the substitution service template */ public Optional<ServiceTemplate> createUnifiedSubstitutionServiceTemplate( - ServiceTemplate serviceTemplate, - List<UnifiedCompositionData> unifiedCompositionDataList, - TranslationContext context, - String substitutionNodeTypeId, - Integer index) { + ServiceTemplate serviceTemplate, + List<UnifiedCompositionData> unifiedCompositionDataList, + TranslationContext context, + String substitutionNodeTypeId, + Integer index) { if (CollectionUtils.isEmpty(unifiedCompositionDataList)) { return Optional.empty(); } UnifiedCompositionData unifiedCompositionData = unifiedCompositionDataList.get(0); String templateName = - getTemplateName(serviceTemplate, unifiedCompositionData, substitutionNodeTypeId, index); + getTemplateName(serviceTemplate, unifiedCompositionData, substitutionNodeTypeId, index); ServiceTemplate substitutionServiceTemplate = - HeatToToscaUtil.createInitSubstitutionServiceTemplate(templateName); + HeatToToscaUtil.createInitSubstitutionServiceTemplate(templateName); createIndexInputParameter(substitutionServiceTemplate); String computeNodeType = - handleCompute(serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, - context); + handleCompute(serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, + context); handlePorts(serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, - computeNodeType, context); + computeNodeType, context); createOutputParameters(serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, - computeNodeType, context); + computeNodeType, context); NodeType substitutionGlobalNodeType = - handleSubstitutionGlobalNodeType(serviceTemplate, substitutionServiceTemplate, - context, unifiedCompositionData, substitutionNodeTypeId, index); + handleSubstitutionGlobalNodeType(serviceTemplate, substitutionServiceTemplate, + context, unifiedCompositionData, substitutionNodeTypeId, index); + + ServiceTemplate globalSubstitutionServiceTemplate = + HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context); + addComputeNodeTypeToGlobalST(computeNodeType, serviceTemplate, + globalSubstitutionServiceTemplate, substitutionGlobalNodeType); HeatToToscaUtil.handleSubstitutionMapping(context, - substitutionNodeTypeId, - substitutionServiceTemplate, substitutionGlobalNodeType); + substitutionNodeTypeId, + substitutionServiceTemplate, substitutionGlobalNodeType); context.getTranslatedServiceTemplates().put(templateName, substitutionServiceTemplate); return Optional.of(substitutionServiceTemplate); } + private void addComputeNodeTypeToGlobalST(String computeNodeType, + ServiceTemplate serviceTemplate, + ServiceTemplate globalSubstitutionServiceTemplate, + NodeType substitutionGlobalNodeType) { + NodeType nodeType = DataModelUtil.getNodeType(serviceTemplate, computeNodeType); + NodeType clonedNT = + (NodeType) DataModelUtil.getClonedObject(substitutionGlobalNodeType, NodeType.class); + clonedNT.setDerived_from(nodeType.getDerived_from()); + DataModelUtil + .addNodeType(globalSubstitutionServiceTemplate, computeNodeType, + clonedNT); + } + /** * Create abstract substitute node template that can be substituted by the input * substitutionServiceTemplate. @@ -213,12 +233,12 @@ public class UnifiedCompositionService { * @return the abstract substitute node template id */ public String createAbstractSubstituteNodeTemplate( - ServiceTemplate serviceTemplate, - ServiceTemplate substitutionServiceTemplate, - List<UnifiedCompositionData> unifiedCompositionDataList, - String substituteNodeTypeId, - TranslationContext context, - Integer index) { + ServiceTemplate serviceTemplate, + ServiceTemplate substitutionServiceTemplate, + List<UnifiedCompositionData> unifiedCompositionDataList, + String substituteNodeTypeId, + TranslationContext context, + Integer index) { NodeTemplate substitutionNodeTemplate = new NodeTemplate(); List<String> directiveList = new ArrayList<>(); @@ -226,26 +246,26 @@ public class UnifiedCompositionService { substitutionNodeTemplate.setDirectives(directiveList); substitutionNodeTemplate.setType(substituteNodeTypeId); Optional<Map<String, Object>> abstractSubstitutionProperties = - createAbstractSubstitutionProperties(serviceTemplate, - substitutionServiceTemplate, unifiedCompositionDataList, context); + createAbstractSubstitutionProperties(serviceTemplate, + substitutionServiceTemplate, unifiedCompositionDataList, context); abstractSubstitutionProperties.ifPresent(substitutionNodeTemplate::setProperties); //Add substitution filtering property String substitutionServiceTemplateName = ToscaUtil.getServiceTemplateFileName( - substitutionServiceTemplate); + substitutionServiceTemplate); int count = unifiedCompositionDataList.size(); DataModelUtil.addSubstitutionFilteringProperty(substitutionServiceTemplateName, - substitutionNodeTemplate, count); + substitutionNodeTemplate, count); //Add index_value property addIndexValueProperty(substitutionNodeTemplate); String substituteNodeTemplateId = - getSubstituteNodeTemplateId(serviceTemplate, unifiedCompositionDataList.get(0), - substituteNodeTypeId, index); + getSubstituteNodeTemplateId(serviceTemplate, unifiedCompositionDataList.get(0), + substituteNodeTypeId, index); //Add node template id and related abstract node template id in context addUnifiedSubstitionData(context, serviceTemplate, unifiedCompositionDataList, - substituteNodeTemplateId); + substituteNodeTemplateId); DataModelUtil - .addNodeTemplate(serviceTemplate, substituteNodeTemplateId, substitutionNodeTemplate); + .addNodeTemplate(serviceTemplate, substituteNodeTemplateId, substitutionNodeTemplate); return substituteNodeTemplateId; } @@ -284,18 +304,18 @@ public class UnifiedCompositionService { * @param context the translation context */ public void cleanUnifiedCompositionEntities( - ServiceTemplate serviceTemplate, - List<UnifiedCompositionData> unifiedCompositionDataList, - TranslationContext context) { + ServiceTemplate serviceTemplate, + List<UnifiedCompositionData> unifiedCompositionDataList, + TranslationContext context) { for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) { ComputeTemplateConsolidationData computeTemplateConsolidationData = - unifiedCompositionData.getComputeTemplateConsolidationData(); + unifiedCompositionData.getComputeTemplateConsolidationData(); cleanServiceTemplate(serviceTemplate, computeTemplateConsolidationData, context); List<PortTemplateConsolidationData> portTemplateConsolidationDataList = - getPortTemplateConsolidationDataList(unifiedCompositionData); + getPortTemplateConsolidationDataList(unifiedCompositionData); for (PortTemplateConsolidationData portTemplateConsolidationData : - portTemplateConsolidationDataList) { + portTemplateConsolidationDataList) { cleanServiceTemplate(serviceTemplate, portTemplateConsolidationData, context); } } @@ -314,8 +334,8 @@ public class UnifiedCompositionService { TranslationContext context) { for (UnifiedCompositionData unifiedData : unifiedCompositionDataList) { removeCleanedNodeType( - unifiedData.getComputeTemplateConsolidationData().getNodeTemplateId(), serviceTemplate, - context); + unifiedData.getComputeTemplateConsolidationData().getNodeTemplateId(), serviceTemplate, + context); } if (MapUtils.isEmpty(serviceTemplate.getNode_types())) { serviceTemplate.setNode_types(null); @@ -334,16 +354,16 @@ public class UnifiedCompositionService { String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate); UnifiedSubstitutionData unifiedSubstitutionData = context.getUnifiedSubstitutionData() - .get(serviceTemplateFileName); + .get(serviceTemplateFileName); if (Objects.nonNull(unifiedSubstitutionData)) { //Handle get attribute in connectivity for abstarct node to abstract node templates Set<String> abstractNodeIds = - new HashSet<>(unifiedSubstitutionData.getAllRelatedAbstractNodeIds()); + new HashSet<>(unifiedSubstitutionData.getAllRelatedAbstractNodeIds()); handleGetAttrInConnectivity(serviceTemplate, abstractNodeIds, context); //Handle get attribute in connectivity for abstract node templates to nested node template Set<String> nestedNodeIds = - new HashSet<>(unifiedSubstitutionData.getAllUnifiedNestedNodeTemplateIds()); + new HashSet<>(unifiedSubstitutionData.getAllUnifiedNestedNodeTemplateIds()); handleGetAttrInConnectivity(serviceTemplate, nestedNodeIds, context); } } @@ -362,19 +382,19 @@ public class UnifiedCompositionService { TranslationContext context) { handleUnifiedNestedNodeType(mainServiceTemplate, nestedServiceTemplate, context); updateUnifiedNestedTemplates(mainServiceTemplate, nestedServiceTemplate, - unifiedCompositionData, context); + unifiedCompositionData, context); } private void handleGetAttrInConnectivity(ServiceTemplate serviceTemplate, Set<String> unifiedNodeIds, TranslationContext context) { Map<String, NodeTemplate> nodeTemplates = - serviceTemplate.getTopology_template().getNode_templates(); + serviceTemplate.getTopology_template().getNode_templates(); String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate); for (String unifiedNodeId : unifiedNodeIds) { NodeTemplate nodeTemplate = nodeTemplates.get(unifiedNodeId); handleGetAttrInAbstractNodeTemplate(serviceTemplate, context, serviceTemplateFileName, - nodeTemplate); + nodeTemplate); } } @@ -384,30 +404,30 @@ public class UnifiedCompositionService { SubstitutionMapping substitutionMappings = - nestedServiceTemplate.getTopology_template().getSubstitution_mappings(); + nestedServiceTemplate.getTopology_template().getSubstitution_mappings(); String nodeTypeId = substitutionMappings.getNode_type(); Optional<String> newNestedNodeTypeId = - getNewNestedNodeTypeId(mainServiceTemplate, nestedServiceTemplate, context); + getNewNestedNodeTypeId(mainServiceTemplate, nestedServiceTemplate, context); ServiceTemplate globalSubstitutionServiceTemplate = - context.getGlobalSubstitutionServiceTemplate(); + context.getGlobalSubstitutionServiceTemplate(); if (isNestedServiceTemplateWasHandled(globalSubstitutionServiceTemplate, nestedServiceTemplate, - context, - newNestedNodeTypeId)) { + context, + newNestedNodeTypeId)) { context - .updateHandledComputeType(ToscaUtil.getServiceTemplateFileName(mainServiceTemplate), - newNestedNodeTypeId.get(), - ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate)); + .updateHandledComputeType(ToscaUtil.getServiceTemplateFileName(mainServiceTemplate), + newNestedNodeTypeId.get(), + ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate)); return; } newNestedNodeTypeId.ifPresent( - newNestedNodeTypeIdVal -> handleNestedNodeType(nodeTypeId, newNestedNodeTypeIdVal, - nestedServiceTemplate, mainServiceTemplate, globalSubstitutionServiceTemplate, - context)); + newNestedNodeTypeIdVal -> handleNestedNodeType(nodeTypeId, newNestedNodeTypeIdVal, + nestedServiceTemplate, mainServiceTemplate, globalSubstitutionServiceTemplate, + context)); } @@ -416,9 +436,9 @@ public class UnifiedCompositionService { TranslationContext context, Optional<String> newNestedNodeTypeId) { return newNestedNodeTypeId.isPresent() - && context.isNestedServiceTemplateWasHandled( - ToscaUtil.getServiceTemplateFileName(mainServiceTemplate), - ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate)); + && context.isNestedServiceTemplateWasHandled( + ToscaUtil.getServiceTemplateFileName(mainServiceTemplate), + ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate)); } private void handleNestedNodeType(String nodeTypeId, String newNestedNodeTypeId, @@ -428,8 +448,8 @@ public class UnifiedCompositionService { TranslationContext context) { updateNestedServiceTemplate(nestedServiceTemplate, context); updateNestedNodeType(nodeTypeId, newNestedNodeTypeId, nestedServiceTemplate, - mainServiceTemplate, - globalSubstitutionServiceTemplate, context); + mainServiceTemplate, + globalSubstitutionServiceTemplate, context); } @@ -442,24 +462,24 @@ public class UnifiedCompositionService { private void enrichPortProperties(ServiceTemplate nestedServiceTemplate, TranslationContext context) { String nestedServiceTemplateFileName = - ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate); + ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate); FilePortConsolidationData filePortConsolidationData = - context.getConsolidationData().getPortConsolidationData().getFilePortConsolidationData - (nestedServiceTemplateFileName); + context.getConsolidationData().getPortConsolidationData().getFilePortConsolidationData + (nestedServiceTemplateFileName); if (Objects.nonNull(filePortConsolidationData)) { Set<String> portNodeTemplateIds = filePortConsolidationData.getAllPortNodeTemplateIds(); if (Objects.nonNull(portNodeTemplateIds)) { for (String portNodeTemplateId : portNodeTemplateIds) { NodeTemplate portNodeTemplate = DataModelUtil.getNodeTemplate(nestedServiceTemplate, - portNodeTemplateId); + portNodeTemplateId); List<EntityConsolidationData> portEntityConsolidationDataList = new ArrayList<>(); portEntityConsolidationDataList.add(filePortConsolidationData - .getPortTemplateConsolidationData(portNodeTemplateId)); + .getPortTemplateConsolidationData(portNodeTemplateId)); handleNodeTypeProperties(nestedServiceTemplate, - portEntityConsolidationDataList, portNodeTemplate, UnifiedCompositionEntity.Port, - null, context); + portEntityConsolidationDataList, portNodeTemplate, UnifiedCompositionEntity.Port, + null, context); } } } @@ -471,12 +491,14 @@ public class UnifiedCompositionService { ServiceTemplate globalSubstitutionServiceTemplate, TranslationContext context) { String indexedNewNestedNodeTypeId = - updateNodeTypeId(nodeTypeId, newNestedNodeTypeId, nestedServiceTemplate, - mainServiceTemplate, - globalSubstitutionServiceTemplate, context); + updateNodeTypeId(nodeTypeId, newNestedNodeTypeId, nestedServiceTemplate, + mainServiceTemplate, + globalSubstitutionServiceTemplate, context); updateNodeTypeProperties(nestedServiceTemplate, globalSubstitutionServiceTemplate, - indexedNewNestedNodeTypeId); + indexedNewNestedNodeTypeId); + //addComputeNodeTypeToGlobalST(); + } private void updateNodeTypeProperties(ServiceTemplate nestedServiceTemplate, @@ -484,10 +506,12 @@ public class UnifiedCompositionService { String nodeTypeId) { ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl(); Map<String, PropertyDefinition> nodeTypePropertiesDefinition = - toscaAnalyzerService.manageSubstitutionNodeTypeProperties(nestedServiceTemplate); + toscaAnalyzerService.manageSubstitutionNodeTypeProperties(nestedServiceTemplate); NodeType nestedNodeType = - DataModelUtil.getNodeType(globalSubstitutionServiceTemplate, nodeTypeId); + DataModelUtil.getNodeType(globalSubstitutionServiceTemplate, nodeTypeId); nestedNodeType.setProperties(nodeTypePropertiesDefinition); + addComputeNodeTypeToGlobalST(nestedServiceTemplate.getNode_types().keySet().iterator().next() + , nestedServiceTemplate, globalSubstitutionServiceTemplate, nestedNodeType); } private String updateNodeTypeId(String nodeTypeId, String newNestedNodeTypeId, @@ -496,17 +520,17 @@ public class UnifiedCompositionService { ServiceTemplate globalSubstitutionServiceTemplate, TranslationContext context) { String indexedNewNestedNodeTypeId = - handleNestedNodeTypeInGlobalSubstitutionTemplate(nodeTypeId, newNestedNodeTypeId, - globalSubstitutionServiceTemplate, context); + handleNestedNodeTypeInGlobalSubstitutionTemplate(nodeTypeId, newNestedNodeTypeId, + globalSubstitutionServiceTemplate, context); handleSubstitutionMappingInNestedServiceTemplate(indexedNewNestedNodeTypeId, - nestedServiceTemplate, context); + nestedServiceTemplate, context); context - .updateHandledComputeType( - ToscaUtil.getServiceTemplateFileName(mainServiceTemplate), - ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate), - newNestedNodeTypeId); + .updateHandledComputeType( + ToscaUtil.getServiceTemplateFileName(mainServiceTemplate), + ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate), + newNestedNodeTypeId); return indexedNewNestedNodeTypeId; } @@ -515,23 +539,23 @@ public class UnifiedCompositionService { ServiceTemplate globalSubstitutionServiceTemplate, TranslationContext context) { String indexedNodeType = - getIndexedGlobalNodeTypeId(newNestedNodeTypeId, context); + getIndexedGlobalNodeTypeId(newNestedNodeTypeId, context); context.updateUsedTimesForNestedComputeNodeType( - ToscaUtil.getServiceTemplateFileName(globalSubstitutionServiceTemplate), - newNestedNodeTypeId); + ToscaUtil.getServiceTemplateFileName(globalSubstitutionServiceTemplate), + newNestedNodeTypeId); handleNestedNodeTypesInGlobalSubstituteServiceTemplate(nodeTypeId, indexedNodeType, - globalSubstitutionServiceTemplate, context); + globalSubstitutionServiceTemplate, context); return indexedNodeType; } private String getIndexedGlobalNodeTypeId(String newNestedNodeTypeId, TranslationContext context) { int globalNodeTypeIndex = - context.getGlobalNodeTypeIndex( - ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), - newNestedNodeTypeId); + context.getGlobalNodeTypeIndex( + ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), + newNestedNodeTypeId); return globalNodeTypeIndex > 0 ? newNestedNodeTypeId + "_" - + String.valueOf(globalNodeTypeIndex) : newNestedNodeTypeId; + + String.valueOf(globalNodeTypeIndex) : newNestedNodeTypeId; } private void updateUnifiedNestedTemplates(ServiceTemplate mainServiceTemplate, @@ -540,13 +564,13 @@ public class UnifiedCompositionService { TranslationContext context) { NestedTemplateConsolidationData nestedTemplateConsolidationData = - unifiedCompositionData.getNestedTemplateConsolidationData(); + unifiedCompositionData.getNestedTemplateConsolidationData(); if (Objects.isNull(nestedTemplateConsolidationData)) { return; } handleNestedNodeTemplateInMainServiceTemplate( - nestedTemplateConsolidationData.getNodeTemplateId(), mainServiceTemplate, - nestedServiceTemplate, context); + nestedTemplateConsolidationData.getNodeTemplateId(), mainServiceTemplate, + nestedServiceTemplate, context); } @@ -564,11 +588,11 @@ public class UnifiedCompositionService { TranslationContext context) { updNestedCompositionNodesConnectedInConnectivity(serviceTemplate, unifiedCompositionData, - context); + context); updNestedCompositionNodesGetAttrInConnectivity(serviceTemplate, unifiedCompositionData, - context); + context); updNestedCompositionOutputParamGetAttrInConnectivity(serviceTemplate, - unifiedCompositionData, context); + unifiedCompositionData, context); } @@ -583,21 +607,21 @@ public class UnifiedCompositionService { UnifiedCompositionData unifiedCompositionData, TranslationContext context) { EntityConsolidationData entityConsolidationData = - unifiedCompositionData.getNestedTemplateConsolidationData(); + unifiedCompositionData.getNestedTemplateConsolidationData(); updateHeatStackGroupNestedComposition(serviceTemplate, entityConsolidationData, context); } public void handleComplexVfcType(ServiceTemplate serviceTemplate, TranslationContext context) { SubstitutionMapping substitution_mappings = - serviceTemplate.getTopology_template().getSubstitution_mappings(); + serviceTemplate.getTopology_template().getSubstitution_mappings(); if (Objects.isNull(substitution_mappings)) { return; } ServiceTemplate globalSubstitutionServiceTemplate = - context.getGlobalSubstitutionServiceTemplate(); + context.getGlobalSubstitutionServiceTemplate(); String substitutionNT = substitution_mappings.getNode_type(); if (globalSubstitutionServiceTemplate.getNode_types().containsKey(substitutionNT)) { @@ -607,36 +631,37 @@ public class UnifiedCompositionService { } } + protected void updNodesConnectedOutConnectivity(ServiceTemplate serviceTemplate, List<UnifiedCompositionData> - unifiedCompositionDataList, + unifiedCompositionDataList, TranslationContext context) { for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) { ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData - .getComputeTemplateConsolidationData(); + .getComputeTemplateConsolidationData(); //Add requirements in the abstract node template for nodes connected out for computes String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + computeTemplateConsolidationData.getNodeTemplateId()); Map<String, List<RequirementAssignmentData>> computeNodesConnectedOut = - computeTemplateConsolidationData.getNodesConnectedOut(); + computeTemplateConsolidationData.getNodesConnectedOut(); if (computeNodesConnectedOut != null) { updateRequirementInAbstractNodeTemplate(serviceTemplate, computeTemplateConsolidationData, - newComputeNodeTemplateId, computeNodesConnectedOut, context); + newComputeNodeTemplateId, computeNodesConnectedOut, context); } String computeType = getComputeTypeSuffix(serviceTemplate, computeTemplateConsolidationData - .getNodeTemplateId()); + .getNodeTemplateId()); //Add requirements in the abstract node template for nodes connected out for ports List<PortTemplateConsolidationData> portTemplateConsolidationDataList = - getPortTemplateConsolidationDataList(unifiedCompositionData); + getPortTemplateConsolidationDataList(unifiedCompositionData); for (PortTemplateConsolidationData portTemplateConsolidationData : - portTemplateConsolidationDataList) { + portTemplateConsolidationDataList) { String newPortNodeTemplateId = getNewPortNodeTemplateId(portTemplateConsolidationData - .getNodeTemplateId(), computeType, computeTemplateConsolidationData); + .getNodeTemplateId(), computeType, computeTemplateConsolidationData); Map<String, List<RequirementAssignmentData>> portNodesConnectedOut = - portTemplateConsolidationData.getNodesConnectedOut(); + portTemplateConsolidationData.getNodesConnectedOut(); if (portNodesConnectedOut != null) { updateRequirementInAbstractNodeTemplate(serviceTemplate, portTemplateConsolidationData, - newPortNodeTemplateId, portNodesConnectedOut, context); + newPortNodeTemplateId, portNodesConnectedOut, context); } } } @@ -644,28 +669,28 @@ public class UnifiedCompositionService { protected void updNodesConnectedInConnectivity(ServiceTemplate serviceTemplate, List<UnifiedCompositionData> - unifiedCompositionDataList, + unifiedCompositionDataList, TranslationContext context) { for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) { ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData - .getComputeTemplateConsolidationData(); + .getComputeTemplateConsolidationData(); //Update requirements in the node template which pointing to the computes String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + computeTemplateConsolidationData.getNodeTemplateId()); updNodesConnectedInConnectivity(serviceTemplate, computeTemplateConsolidationData, - newComputeNodeTemplateId, context, false); + newComputeNodeTemplateId, context, false); String computeType = getComputeTypeSuffix(serviceTemplate, computeTemplateConsolidationData - .getNodeTemplateId()); + .getNodeTemplateId()); //Update requirements in the node template which pointing to the ports List<PortTemplateConsolidationData> portTemplateConsolidationDataList = - getPortTemplateConsolidationDataList(unifiedCompositionData); + getPortTemplateConsolidationDataList(unifiedCompositionData); for (PortTemplateConsolidationData portTemplateConsolidationData : - portTemplateConsolidationDataList) { + portTemplateConsolidationDataList) { String newPortNodeTemplateId = getNewPortNodeTemplateId(portTemplateConsolidationData - .getNodeTemplateId(), computeType, computeTemplateConsolidationData); + .getNodeTemplateId(), computeType, computeTemplateConsolidationData); updNodesConnectedInConnectivity(serviceTemplate, portTemplateConsolidationData, - newPortNodeTemplateId, context, false); + newPortNodeTemplateId, context, false); } } } @@ -676,19 +701,19 @@ public class UnifiedCompositionService { TranslationContext context, boolean isNested) { Map<String, List<RequirementAssignmentData>> nodesConnectedIn = - entityConsolidationData.getNodesConnectedIn(); + entityConsolidationData.getNodesConnectedIn(); if (nodesConnectedIn == null) { //No nodes connected in info return; } for (Map.Entry<String, List<RequirementAssignmentData>> entry : nodesConnectedIn - .entrySet()) { + .entrySet()) { List<RequirementAssignmentData> requirementAssignmentDataList = entry.getValue(); for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList) { RequirementAssignment requirementAssignment = requirementAssignmentData - .getRequirementAssignment(); + .getRequirementAssignment(); if (!requirementAssignment.getNode().equals(entityConsolidationData - .getNodeTemplateId())) { + .getNodeTemplateId())) { //The requirement assignment target node should be the one which we are handling in the //consolidation object continue; @@ -696,10 +721,10 @@ public class UnifiedCompositionService { //Update the requirement assignment object in the original node template if (isNested) { updateRequirementForNestedCompositionNodesConnectedIn(serviceTemplate, - requirementAssignmentData, entityConsolidationData, newNodeTemplateId, context); + requirementAssignmentData, entityConsolidationData, newNodeTemplateId, context); } else { updateRequirementForNodesConnectedIn(serviceTemplate, requirementAssignmentData, - entityConsolidationData, entry.getKey(), newNodeTemplateId, context); + entityConsolidationData, entry.getKey(), newNodeTemplateId, context); } } @@ -707,76 +732,76 @@ public class UnifiedCompositionService { } protected void updNestedCompositionNodesConnectedInConnectivity( - ServiceTemplate serviceTemplate, - UnifiedCompositionData unifiedCompositionData, - TranslationContext context) { + ServiceTemplate serviceTemplate, + UnifiedCompositionData unifiedCompositionData, + TranslationContext context) { NestedTemplateConsolidationData nestedTemplateConsolidationData = unifiedCompositionData - .getNestedTemplateConsolidationData(); + .getNestedTemplateConsolidationData(); //Update requirements in the node template which pointing to the nested nodes String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate); Optional<String> newNestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId( - serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId()); + serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId()); newNestedNodeTemplateId.ifPresent( - newNestedNodeTemplateIdVal -> updNodesConnectedInConnectivity(serviceTemplate, - nestedTemplateConsolidationData, - newNestedNodeTemplateIdVal, context, true)); + newNestedNodeTemplateIdVal -> updNodesConnectedInConnectivity(serviceTemplate, + nestedTemplateConsolidationData, + newNestedNodeTemplateIdVal, context, true)); } protected void updVolumeConnectivity(ServiceTemplate serviceTemplate, List<UnifiedCompositionData> - unifiedCompositionDataList, + unifiedCompositionDataList, TranslationContext context) { for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) { ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData - .getComputeTemplateConsolidationData(); + .getComputeTemplateConsolidationData(); //Add requirements in the abstract node template for compute volumes String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + computeTemplateConsolidationData.getNodeTemplateId()); Map<String, List<RequirementAssignmentData>> computeVolumes = - computeTemplateConsolidationData.getVolumes(); + computeTemplateConsolidationData.getVolumes(); if (computeVolumes != null) { updateRequirementInAbstractNodeTemplate(serviceTemplate, computeTemplateConsolidationData, - newComputeNodeTemplateId, computeVolumes, context); + newComputeNodeTemplateId, computeVolumes, context); } } } protected void updGroupsConnectivity(ServiceTemplate serviceTemplate, List<UnifiedCompositionData> - unifiedCompositionDataList, + unifiedCompositionDataList, TranslationContext context) { for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) { ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData - .getComputeTemplateConsolidationData(); + .getComputeTemplateConsolidationData(); //Add requirements in the abstract node template for nodes connected in for computes String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + computeTemplateConsolidationData.getNodeTemplateId()); updGroupsConnectivity(serviceTemplate, computeTemplateConsolidationData, context); String computeType = getComputeTypeSuffix(serviceTemplate, computeTemplateConsolidationData - .getNodeTemplateId()); + .getNodeTemplateId()); //Add requirements in the abstract node template for nodes connected in for ports List<PortTemplateConsolidationData> portTemplateConsolidationDataList = - getPortTemplateConsolidationDataList(unifiedCompositionData); + getPortTemplateConsolidationDataList(unifiedCompositionData); for (PortTemplateConsolidationData portTemplateConsolidationData : - portTemplateConsolidationDataList) { + portTemplateConsolidationDataList) { String newPortNodeTemplateId = getNewPortNodeTemplateId(portTemplateConsolidationData - .getNodeTemplateId(), computeType, computeTemplateConsolidationData); + .getNodeTemplateId(), computeType, computeTemplateConsolidationData); updGroupsConnectivity(serviceTemplate, portTemplateConsolidationData, context); } } } private void updGroupsConnectivity(ServiceTemplate serviceTemplate, EntityConsolidationData - entityConsolidationData, TranslationContext context) { + entityConsolidationData, TranslationContext context) { List<String> groupIds = entityConsolidationData.getGroupIds(); if (groupIds == null) { return; } String oldNodeTemplateId = entityConsolidationData.getNodeTemplateId(); String abstractNodeTemplateId = context.getUnifiedAbstractNodeTemplateId( - serviceTemplate, entityConsolidationData.getNodeTemplateId()); + serviceTemplate, entityConsolidationData.getNodeTemplateId()); Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template().getGroups(); if (groups != null) { for (String groupId : groupIds) { @@ -797,194 +822,194 @@ public class UnifiedCompositionService { } protected void updOutputParamGetAttrInConnectivity( - ServiceTemplate serviceTemplate, List<UnifiedCompositionData> unifiedComposotionDataList, - TranslationContext context) { + ServiceTemplate serviceTemplate, List<UnifiedCompositionData> unifiedComposotionDataList, + TranslationContext context) { for (UnifiedCompositionData unifiedCompositionData : unifiedComposotionDataList) { ComputeTemplateConsolidationData computeTemplateConsolidationData = - unifiedCompositionData.getComputeTemplateConsolidationData(); + unifiedCompositionData.getComputeTemplateConsolidationData(); String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + computeTemplateConsolidationData.getNodeTemplateId()); updOutputParamGetAttrInConnectivity(serviceTemplate, computeTemplateConsolidationData, - computeTemplateConsolidationData.getNodeTemplateId(), newComputeNodeTemplateId, - context, false); + computeTemplateConsolidationData.getNodeTemplateId(), newComputeNodeTemplateId, + context, false); String computeType = - getComputeTypeSuffix(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + getComputeTypeSuffix(serviceTemplate, + computeTemplateConsolidationData.getNodeTemplateId()); List<PortTemplateConsolidationData> portTemplateConsolidationDataList = - getPortTemplateConsolidationDataList(unifiedCompositionData); + getPortTemplateConsolidationDataList(unifiedCompositionData); for (PortTemplateConsolidationData portTemplateConsolidationData : - portTemplateConsolidationDataList) { + portTemplateConsolidationDataList) { String newPortNodeTemplateId = - getNewPortNodeTemplateId(portTemplateConsolidationData.getNodeTemplateId(), computeType, - computeTemplateConsolidationData); + getNewPortNodeTemplateId(portTemplateConsolidationData.getNodeTemplateId(), computeType, + computeTemplateConsolidationData); updOutputParamGetAttrInConnectivity(serviceTemplate, portTemplateConsolidationData, - portTemplateConsolidationData.getNodeTemplateId(), newPortNodeTemplateId, context, - false); + portTemplateConsolidationData.getNodeTemplateId(), newPortNodeTemplateId, context, + false); } } } protected void updNodesGetAttrInConnectivity( - ServiceTemplate serviceTemplate, - List<UnifiedCompositionData> unifiedComposotionDataList, - TranslationContext context) { + ServiceTemplate serviceTemplate, + List<UnifiedCompositionData> unifiedComposotionDataList, + TranslationContext context) { Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType = - getAllConsolidationNodeTemplateIdAndType(unifiedComposotionDataList); + getAllConsolidationNodeTemplateIdAndType(unifiedComposotionDataList); for (UnifiedCompositionData unifiedCompositionData : unifiedComposotionDataList) { ComputeTemplateConsolidationData computeTemplateConsolidationData = - unifiedCompositionData.getComputeTemplateConsolidationData(); + unifiedCompositionData.getComputeTemplateConsolidationData(); String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + computeTemplateConsolidationData.getNodeTemplateId()); updNodeGetAttrInConnectivity(serviceTemplate, computeTemplateConsolidationData, - computeTemplateConsolidationData.getNodeTemplateId(), - newComputeNodeTemplateId, context, consolidationNodeTemplateIdAndType, false); + computeTemplateConsolidationData.getNodeTemplateId(), + newComputeNodeTemplateId, context, consolidationNodeTemplateIdAndType, false); String computeType = - getComputeTypeSuffix(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + getComputeTypeSuffix(serviceTemplate, + computeTemplateConsolidationData.getNodeTemplateId()); List<PortTemplateConsolidationData> portTemplateConsolidationDataList = - getPortTemplateConsolidationDataList(unifiedCompositionData); + getPortTemplateConsolidationDataList(unifiedCompositionData); for (PortTemplateConsolidationData portTemplateConsolidationData : - portTemplateConsolidationDataList) { + portTemplateConsolidationDataList) { String newPotNodeTemplateId = - getNewPortNodeTemplateId(portTemplateConsolidationData.getNodeTemplateId(), computeType, - computeTemplateConsolidationData); + getNewPortNodeTemplateId(portTemplateConsolidationData.getNodeTemplateId(), computeType, + computeTemplateConsolidationData); updNodeGetAttrInConnectivity(serviceTemplate, portTemplateConsolidationData, - portTemplateConsolidationData.getNodeTemplateId(), - newPotNodeTemplateId, context, consolidationNodeTemplateIdAndType, false); + portTemplateConsolidationData.getNodeTemplateId(), + newPotNodeTemplateId, context, consolidationNodeTemplateIdAndType, false); } } } protected void updNestedCompositionOutputParamGetAttrInConnectivity( - ServiceTemplate serviceTemplate, UnifiedCompositionData unifiedCompositionData, - TranslationContext context) { + ServiceTemplate serviceTemplate, UnifiedCompositionData unifiedCompositionData, + TranslationContext context) { NestedTemplateConsolidationData nestedTemplateConsolidationData = - unifiedCompositionData.getNestedTemplateConsolidationData(); + unifiedCompositionData.getNestedTemplateConsolidationData(); if (Objects.isNull(nestedTemplateConsolidationData)) { return; } String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate); Optional<String> newNestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId( - serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId()); + serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId()); newNestedNodeTemplateId.ifPresent( - newNestedNodeTemplateIdVal -> updOutputParamGetAttrInConnectivity(serviceTemplate, - nestedTemplateConsolidationData, nestedTemplateConsolidationData.getNodeTemplateId(), - newNestedNodeTemplateIdVal, context, true)); + newNestedNodeTemplateIdVal -> updOutputParamGetAttrInConnectivity(serviceTemplate, + nestedTemplateConsolidationData, nestedTemplateConsolidationData.getNodeTemplateId(), + newNestedNodeTemplateIdVal, context, true)); } protected void updNestedCompositionNodesGetAttrInConnectivity( - ServiceTemplate serviceTemplate, - UnifiedCompositionData unifiedCompositionData, - TranslationContext context) { + ServiceTemplate serviceTemplate, + UnifiedCompositionData unifiedCompositionData, + TranslationContext context) { NestedTemplateConsolidationData nestedTemplateConsolidationData = - unifiedCompositionData.getNestedTemplateConsolidationData(); + unifiedCompositionData.getNestedTemplateConsolidationData(); if (Objects.isNull(nestedTemplateConsolidationData)) { return; } String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate); Optional<String> newNestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId( - serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId()); + serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId()); newNestedNodeTemplateId.ifPresent( - newNestedNodeTemplateIdVal -> updNodeGetAttrInConnectivity(serviceTemplate, - nestedTemplateConsolidationData, nestedTemplateConsolidationData.getNodeTemplateId(), - newNestedNodeTemplateIdVal, context, null, true)); + newNestedNodeTemplateIdVal -> updNodeGetAttrInConnectivity(serviceTemplate, + nestedTemplateConsolidationData, nestedTemplateConsolidationData.getNodeTemplateId(), + newNestedNodeTemplateIdVal, context, null, true)); } private void updateRequirementForNodesConnectedIn( - ServiceTemplate serviceTemplate, - RequirementAssignmentData requirementAssignmentData, - EntityConsolidationData entityConsolidationData, - String originalNodeTemplateId, - String newNodeTemplateId, - TranslationContext context) { + ServiceTemplate serviceTemplate, + RequirementAssignmentData requirementAssignmentData, + EntityConsolidationData entityConsolidationData, + String originalNodeTemplateId, + String newNodeTemplateId, + TranslationContext context) { ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl(); RequirementAssignment requirementAssignment = requirementAssignmentData - .getRequirementAssignment(); + .getRequirementAssignment(); String newAbstractUnifiedNodeTemplateId = context.getUnifiedAbstractNodeTemplateId( - serviceTemplate, entityConsolidationData.getNodeTemplateId()); + serviceTemplate, entityConsolidationData.getNodeTemplateId()); NodeTemplate abstractUnifiedNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, - newAbstractUnifiedNodeTemplateId); + newAbstractUnifiedNodeTemplateId); Optional<String> newCapabilityId = getNewCapabilityForNodesConnectedIn(serviceTemplate, - abstractUnifiedNodeTemplate, requirementAssignment, newNodeTemplateId, context); + abstractUnifiedNodeTemplate, requirementAssignment, newNodeTemplateId, context); if (newCapabilityId.isPresent()) { //Creating a copy of the requirement object and checking if it already exists in the // original node template RequirementAssignment requirementAssignmentCopy = (RequirementAssignment) getClonedObject( - requirementAssignmentData.getRequirementAssignment(), RequirementAssignment.class); + requirementAssignmentData.getRequirementAssignment(), RequirementAssignment.class); NodeTemplate originalNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, - originalNodeTemplateId); + originalNodeTemplateId); requirementAssignmentCopy.setCapability(newCapabilityId.get()); requirementAssignmentCopy.setNode(newAbstractUnifiedNodeTemplateId); if (!toscaAnalyzerService.isRequirementExistInNodeTemplate(originalNodeTemplate, - requirementAssignmentData.getRequirementId(), requirementAssignmentCopy)) { + requirementAssignmentData.getRequirementId(), requirementAssignmentCopy)) { //Update the existing requirement requirementAssignmentData.getRequirementAssignment().setCapability(newCapabilityId - .get()); + .get()); requirementAssignmentData.getRequirementAssignment() - .setNode(newAbstractUnifiedNodeTemplateId); + .setNode(newAbstractUnifiedNodeTemplateId); } else { //The updated requirement already exists in the node template so simply remove the // current one DataModelUtil.removeRequirementAssignment(originalNodeTemplate, requirementAssignmentData - .getRequirementId(), requirementAssignmentData.getRequirementAssignment()); + .getRequirementId(), requirementAssignmentData.getRequirementAssignment()); } } } private void updateRequirementForNestedCompositionNodesConnectedIn( - ServiceTemplate serviceTemplate, - RequirementAssignmentData requirementAssignmentData, - EntityConsolidationData entityConsolidationData, - String newNodeTemplateId, - TranslationContext context) { + ServiceTemplate serviceTemplate, + RequirementAssignmentData requirementAssignmentData, + EntityConsolidationData entityConsolidationData, + String newNodeTemplateId, + TranslationContext context) { ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl(); String newAbstractUnifiedNodeTemplateId = newNodeTemplateId; RequirementAssignment requirementAssignment = requirementAssignmentData - .getRequirementAssignment(); + .getRequirementAssignment(); //Creating a copy of the requirement object and checking if it already exists in the // original node template RequirementAssignment requirementAssignmentCopy = (RequirementAssignment) getClonedObject( - requirementAssignmentData.getRequirementAssignment(), RequirementAssignment.class); + requirementAssignmentData.getRequirementAssignment(), RequirementAssignment.class); NodeTemplate unifiedAbstractNestedNodeTemplate = DataModelUtil - .getNodeTemplate(serviceTemplate, newAbstractUnifiedNodeTemplateId); + .getNodeTemplate(serviceTemplate, newAbstractUnifiedNodeTemplateId); requirementAssignmentCopy.setCapability(requirementAssignment.getCapability()); requirementAssignmentCopy.setNode(newAbstractUnifiedNodeTemplateId); if (!toscaAnalyzerService.isRequirementExistInNodeTemplate(unifiedAbstractNestedNodeTemplate, - requirementAssignmentData.getRequirementId(), requirementAssignmentCopy)) { + requirementAssignmentData.getRequirementId(), requirementAssignmentCopy)) { //Update the existing requirement requirementAssignmentData.getRequirementAssignment() - .setNode(newAbstractUnifiedNodeTemplateId); + .setNode(newAbstractUnifiedNodeTemplateId); } else { //The updated requirement already exists in the node template so simply remove the // current one DataModelUtil.removeRequirementAssignment(unifiedAbstractNestedNodeTemplate, - requirementAssignmentData.getRequirementId(), requirementAssignmentData - .getRequirementAssignment()); + requirementAssignmentData.getRequirementId(), requirementAssignmentData + .getRequirementAssignment()); } } private Optional<String> getNewCapabilityForNodesConnectedIn(ServiceTemplate serviceTemplate, NodeTemplate unifiedNodeTemplate, RequirementAssignment - requirementAssignment, + requirementAssignment, String newNodeTemplateId, TranslationContext context) { ServiceTemplate globalSubstitutionServiceTemplate = - HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context); + HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context); Map<String, NodeType> nodeTypes = globalSubstitutionServiceTemplate.getNode_types(); String unifiedNodeTemplateType = unifiedNodeTemplate.getType(); NodeType unifiedNodeType = nodeTypes.get(unifiedNodeTemplateType); Map<String, CapabilityDefinition> abstractNodeTypeCapabilities = unifiedNodeType - .getCapabilities(); + .getCapabilities(); for (Map.Entry<String, CapabilityDefinition> entry : abstractNodeTypeCapabilities.entrySet()) { String capabilityId = entry.getKey(); CapabilityDefinition capabilityDefinition = entry.getValue(); @@ -1002,18 +1027,18 @@ public class UnifiedCompositionService { private void updateRequirementInAbstractNodeTemplate(ServiceTemplate serviceTemplate, EntityConsolidationData - entityConsolidationData, + entityConsolidationData, String newNodeTemplateId, Map<String, List<RequirementAssignmentData>> - requirementAssignmentDataMap, + requirementAssignmentDataMap, TranslationContext context) { ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl(); for (Map.Entry<String, List<RequirementAssignmentData>> entry : requirementAssignmentDataMap - .entrySet()) { + .entrySet()) { String abstractNodeTemplateId = context.getUnifiedAbstractNodeTemplateId( - serviceTemplate, entityConsolidationData.getNodeTemplateId()); + serviceTemplate, entityConsolidationData.getNodeTemplateId()); NodeTemplate abstractNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, - abstractNodeTemplateId); + abstractNodeTemplateId); if (abstractNodeTemplate == null) { //The abstract node template is not found from id in the context return; @@ -1022,62 +1047,62 @@ public class UnifiedCompositionService { for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList) { String oldRequirementId = requirementAssignmentData.getRequirementId(); RequirementAssignment abstractRequirementAssignment = (RequirementAssignment) - getClonedObject(requirementAssignmentData.getRequirementAssignment(), - RequirementAssignment.class); + getClonedObject(requirementAssignmentData.getRequirementAssignment(), + RequirementAssignment.class); String newRequirementId = oldRequirementId + "_" + newNodeTemplateId; //Check if the requirement is not already present in the list of requirements of the // abstract node template if (!toscaAnalyzerService.isRequirementExistInNodeTemplate(abstractNodeTemplate, - newRequirementId, abstractRequirementAssignment)) { + newRequirementId, abstractRequirementAssignment)) { DataModelUtil.addRequirementAssignment(abstractNodeTemplate, newRequirementId, - abstractRequirementAssignment); + abstractRequirementAssignment); //Update the volume relationship template if required updateVolumeRelationshipTemplate(serviceTemplate, abstractRequirementAssignment - .getRelationship(), context); + .getRelationship(), context); } } } } private NodeTemplate getAbstractNodeTemplate( - ServiceTemplate serviceTemplate, - UnifiedCompositionEntity unifiedCompositionEntity, - ComputeTemplateConsolidationData computeTemplateConsolidationData, - PortTemplateConsolidationData portTemplateConsolidationData, - TranslationContext context) { + ServiceTemplate serviceTemplate, + UnifiedCompositionEntity unifiedCompositionEntity, + ComputeTemplateConsolidationData computeTemplateConsolidationData, + PortTemplateConsolidationData portTemplateConsolidationData, + TranslationContext context) { String abstractNodeTemplateId = - getAbstractNodeTemplateId(serviceTemplate, unifiedCompositionEntity, - computeTemplateConsolidationData, portTemplateConsolidationData, context); + getAbstractNodeTemplateId(serviceTemplate, unifiedCompositionEntity, + computeTemplateConsolidationData, portTemplateConsolidationData, context); return DataModelUtil.getNodeTemplate(serviceTemplate, - abstractNodeTemplateId); + abstractNodeTemplateId); } private String getAbstractNodeTemplateId( - ServiceTemplate serviceTemplate, - UnifiedCompositionEntity unifiedCompositionEntity, - ComputeTemplateConsolidationData computeTemplateConsolidationData, - PortTemplateConsolidationData portTemplateConsolidationData, - TranslationContext context) { + ServiceTemplate serviceTemplate, + UnifiedCompositionEntity unifiedCompositionEntity, + ComputeTemplateConsolidationData computeTemplateConsolidationData, + PortTemplateConsolidationData portTemplateConsolidationData, + TranslationContext context) { switch (unifiedCompositionEntity) { case Compute: return context.getUnifiedAbstractNodeTemplateId(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + computeTemplateConsolidationData.getNodeTemplateId()); case Port: return context.getUnifiedAbstractNodeTemplateId(serviceTemplate, - portTemplateConsolidationData.getNodeTemplateId()); + portTemplateConsolidationData.getNodeTemplateId()); default: return null; } } private void updNodeGetAttrInConnectivity( - ServiceTemplate serviceTemplate, - EntityConsolidationData entityConsolidationData, - String oldNodeTemplateId, String newNodeTemplateId, - TranslationContext context, - Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType, - boolean isNested) { + ServiceTemplate serviceTemplate, + EntityConsolidationData entityConsolidationData, + String oldNodeTemplateId, String newNodeTemplateId, + TranslationContext context, + Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType, + boolean isNested) { Map<String, List<GetAttrFuncData>> nodesGetAttrIn = entityConsolidationData.getNodesGetAttrIn(); if (MapUtils.isEmpty(nodesGetAttrIn)) { return; @@ -1085,25 +1110,25 @@ public class UnifiedCompositionService { for (String sourceNodeTemplateId : nodesGetAttrIn.keySet()) { NodeTemplate sourceNodeTemplate = - DataModelUtil.getNodeTemplate(serviceTemplate, sourceNodeTemplateId); + DataModelUtil.getNodeTemplate(serviceTemplate, sourceNodeTemplateId); if (!isNested && consolidationNodeTemplateIdAndType.keySet().contains(sourceNodeTemplateId)) { continue; } List<GetAttrFuncData> getAttrFuncDataList = nodesGetAttrIn.get(sourceNodeTemplateId); for (GetAttrFuncData getAttrFuncData : getAttrFuncDataList) { Object propertyValue = - DataModelUtil.getPropertyValue(sourceNodeTemplate, getAttrFuncData.getFieldName()); + DataModelUtil.getPropertyValue(sourceNodeTemplate, getAttrFuncData.getFieldName()); String newAttrName = null; String newGetAttrAbstractNodeTemplateId = newNodeTemplateId; if (!isNested) { newGetAttrAbstractNodeTemplateId = - context.getUnifiedAbstractNodeTemplateId(serviceTemplate, oldNodeTemplateId); + context.getUnifiedAbstractNodeTemplateId(serviceTemplate, oldNodeTemplateId); newAttrName = getNewSubstitutionOutputParameterId(newNodeTemplateId, getAttrFuncData - .getAttributeName()); + .getAttributeName()); } List<List<Object>> getAttrFuncValueList = extractGetAttrFunction(propertyValue); updateGetAttrValue(oldNodeTemplateId, getAttrFuncData, newGetAttrAbstractNodeTemplateId, - newAttrName, getAttrFuncValueList, isNested); + newAttrName, getAttrFuncValueList, isNested); } } } @@ -1113,7 +1138,7 @@ public class UnifiedCompositionService { List<List<Object>> getAttrFuncValueList, boolean isNested) { for (List<Object> getAttrFuncValue : getAttrFuncValueList) { if (oldNodeTemplateId.equals(getAttrFuncValue.get(0)) - && getAttrFuncData.getAttributeName().equals(getAttrFuncValue.get(1))) { + && getAttrFuncData.getAttributeName().equals(getAttrFuncValue.get(1))) { getAttrFuncValue.set(0, newNodeTemplateId); if (!isNested) { getAttrFuncValue.set(1, newAttrName); @@ -1127,7 +1152,7 @@ public class UnifiedCompositionService { String nodeTypeId, Integer index) { ComputeTemplateConsolidationData computeTemplateConsolidationData = - unifiedCompositionData.getComputeTemplateConsolidationData(); + unifiedCompositionData.getComputeTemplateConsolidationData(); String computeType = getComputeTypeSuffix(nodeTypeId); String templateName = "Nested_" + computeType; if (Objects.nonNull(index)) { @@ -1139,7 +1164,7 @@ public class UnifiedCompositionService { private String getComputeTypeSuffix(ServiceTemplate serviceTemplate, String computeNodeTemplateId) { NodeTemplate computeNodeTemplate = - DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId); + DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId); return getComputeTypeSuffix(computeNodeTemplate.getType()); } @@ -1160,26 +1185,26 @@ public class UnifiedCompositionService { TranslationContext context, boolean isNested) { List<GetAttrFuncData> outputParametersGetAttrIn = - entityConsolidationData.getOutputParametersGetAttrIn(); + entityConsolidationData.getOutputParametersGetAttrIn(); if (CollectionUtils.isEmpty(outputParametersGetAttrIn)) { return; } for (GetAttrFuncData getAttrFuncData : outputParametersGetAttrIn) { Object outputParamValue = - DataModelUtil.getOuputParameter(serviceTemplate, getAttrFuncData.getFieldName()) - .getValue(); + DataModelUtil.getOuputParameter(serviceTemplate, getAttrFuncData.getFieldName()) + .getValue(); String newAttrName = null; String newGetAttrAbstractNodeTemplateId = newNodeTemplateId; if (!isNested) { newGetAttrAbstractNodeTemplateId = - context.getUnifiedAbstractNodeTemplateId(serviceTemplate, oldNodeTemplateId); + context.getUnifiedAbstractNodeTemplateId(serviceTemplate, oldNodeTemplateId); newAttrName = getNewSubstitutionOutputParameterId(newNodeTemplateId, getAttrFuncData - .getAttributeName()); + .getAttributeName()); } List<List<Object>> getAttrFuncValueList = extractGetAttrFunction(outputParamValue); updateGetAttrValue(oldNodeTemplateId, getAttrFuncData, newGetAttrAbstractNodeTemplateId, - newAttrName, - getAttrFuncValueList, isNested); + newAttrName, + getAttrFuncValueList, isNested); } } @@ -1191,7 +1216,7 @@ public class UnifiedCompositionService { if (valueObject instanceof Map) { if (((Map) valueObject).containsKey(ToscaFunctions.GET_ATTRIBUTE.getDisplayName())) { getAttrValueList.add( - (List<Object>) ((Map) valueObject).get(ToscaFunctions.GET_ATTRIBUTE.getDisplayName())); + (List<Object>) ((Map) valueObject).get(ToscaFunctions.GET_ATTRIBUTE.getDisplayName())); } for (Object key : ((Map) valueObject).keySet()) { @@ -1212,9 +1237,16 @@ public class UnifiedCompositionService { if (((Map) valueObject).containsKey(toscaFunction.getDisplayName())) { return true; } - Map.Entry<String, Object> functionMapEntry = - (Map.Entry<String, Object>) ((Map) valueObject).entrySet().iterator().next(); - return isIncludeToscaFunc(functionMapEntry.getValue(), toscaFunction); + + Set<Map.Entry<String, Object>> entries = ((Map<String, Object>) valueObject).entrySet(); + for(Map.Entry<String, Object> valueObjectEntry : entries){ + if(isIncludeToscaFunc(valueObjectEntry.getValue(), toscaFunction)){ + return true; + } + } +// Map.Entry<String, Object> functionMapEntry = +// (Map.Entry<String, Object>) ((Map) valueObject).entrySet().iterator().next(); +// return isIncludeToscaFunc(functionMapEntry.getValue(), toscaFunction); } else if (valueObject instanceof List) { for (Object valueEntity : (List) valueObject) { @@ -1232,41 +1264,41 @@ public class UnifiedCompositionService { String computeNodeType, TranslationContext context) { createOutputParametersForCompute(serviceTemplate, substitutionServiceTemplate, - unifiedCompositionDataList, context); + unifiedCompositionDataList, context); createOutputParameterForPorts(serviceTemplate, substitutionServiceTemplate, - unifiedCompositionDataList, computeNodeType, context); + unifiedCompositionDataList, computeNodeType, context); } private void createOutputParameterForPorts( - ServiceTemplate serviceTemplate, - ServiceTemplate substitutionServiceTemplate, - List<UnifiedCompositionData> unifiedCompositionDataList, - String connectedComputeNodeType, - TranslationContext context) { + ServiceTemplate serviceTemplate, + ServiceTemplate substitutionServiceTemplate, + List<UnifiedCompositionData> unifiedCompositionDataList, + String connectedComputeNodeType, + TranslationContext context) { for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) { List<PortTemplateConsolidationData> portTemplateConsolidationDataList = - getPortTemplateConsolidationDataList(unifiedCompositionData); + getPortTemplateConsolidationDataList(unifiedCompositionData); if (CollectionUtils.isEmpty(portTemplateConsolidationDataList)) { return; } for (PortTemplateConsolidationData portTemplateConsolidationData : - portTemplateConsolidationDataList) { + portTemplateConsolidationDataList) { String newPortNodeTemplateId = - getNewPortNodeTemplateId(portTemplateConsolidationData.getNodeTemplateId(), - connectedComputeNodeType, - unifiedCompositionData.getComputeTemplateConsolidationData()); + getNewPortNodeTemplateId(portTemplateConsolidationData.getNodeTemplateId(), + connectedComputeNodeType, + unifiedCompositionData.getComputeTemplateConsolidationData()); addOutputParameters(portTemplateConsolidationData, newPortNodeTemplateId, - serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, context); + serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, context); } } } //The ID should be <vm_type>_<port_type> or <vm_type>_<portNodeTemplateId> private String getNewPortNodeTemplateId( - String portNodeTemplateId, - String connectedComputeNodeType, - ComputeTemplateConsolidationData computeTemplateConsolidationData) { + String portNodeTemplateId, + String connectedComputeNodeType, + ComputeTemplateConsolidationData computeTemplateConsolidationData) { StringBuilder newPortNodeTemplateId = new StringBuilder(); String portType = ConsolidationDataUtil.getPortType(portNodeTemplateId); @@ -1282,20 +1314,20 @@ public class UnifiedCompositionService { } private void createOutputParametersForCompute( - ServiceTemplate serviceTemplate, - ServiceTemplate substitutionServiceTemplate, - List<UnifiedCompositionData> - unifiedCompositionDataList, - TranslationContext context) { + ServiceTemplate serviceTemplate, + ServiceTemplate substitutionServiceTemplate, + List<UnifiedCompositionData> + unifiedCompositionDataList, + TranslationContext context) { List<EntityConsolidationData> computeConsolidationDataList = - getComputeConsolidationDataList(unifiedCompositionDataList); + getComputeConsolidationDataList(unifiedCompositionDataList); for (EntityConsolidationData computeTemplateConsolidationData : computeConsolidationDataList) { String newComputeNodeTemplateId = - getNewComputeNodeTemplateId(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + getNewComputeNodeTemplateId(serviceTemplate, + computeTemplateConsolidationData.getNodeTemplateId()); addOutputParameters(computeTemplateConsolidationData, newComputeNodeTemplateId, - serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, context); + serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, context); } } @@ -1306,10 +1338,10 @@ public class UnifiedCompositionService { List<UnifiedCompositionData> unifiedCompositionDataList, TranslationContext context) { handleNodesGetAttrIn(entityConsolidationData, newNodeTemplateId, serviceTemplate, - substitutionServiceTemplate, unifiedCompositionDataList, context); + substitutionServiceTemplate, unifiedCompositionDataList, context); handleOutputParamGetAttrIn(entityConsolidationData, newNodeTemplateId, serviceTemplate, - substitutionServiceTemplate, context); + substitutionServiceTemplate, context); } private void handleOutputParamGetAttrIn(EntityConsolidationData entityConsolidationData, @@ -1318,11 +1350,11 @@ public class UnifiedCompositionService { ServiceTemplate substitutionServiceTemplate, TranslationContext context) { List<GetAttrFuncData> outputParametersGetAttrIn = - entityConsolidationData.getOutputParametersGetAttrIn(); + entityConsolidationData.getOutputParametersGetAttrIn(); if (!CollectionUtils.isEmpty(outputParametersGetAttrIn)) { for (GetAttrFuncData getAttrFuncData : outputParametersGetAttrIn) { createAndAddOutputParameter(entityConsolidationData, newNodeTemplateId, - substitutionServiceTemplate, getAttrFuncData, context); + substitutionServiceTemplate, getAttrFuncData, context); } } } @@ -1337,13 +1369,13 @@ public class UnifiedCompositionService { if (!MapUtils.isEmpty(getAttrIn)) { Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType = - getAllConsolidationNodeTemplateIdAndType(unifiedCompositionDataList); + getAllConsolidationNodeTemplateIdAndType(unifiedCompositionDataList); for (String sourceNodeTemplateId : getAttrIn.keySet()) { if (!consolidationNodeTemplateIdAndType.keySet().contains(sourceNodeTemplateId)) { List<GetAttrFuncData> getAttrFuncDataList = getAttrIn.get(sourceNodeTemplateId); for (GetAttrFuncData getAttrFuncData : getAttrFuncDataList) { createAndAddOutputParameter(entityConsolidationData, newNodeTemplateId, - substitutionServiceTemplate, getAttrFuncData, context); + substitutionServiceTemplate, getAttrFuncData, context); } } } @@ -1363,10 +1395,10 @@ public class UnifiedCompositionService { ParameterDefinition outputParameter = new ParameterDefinition(); outputParameter.setValue(parameterValue); setOutputParameterType(substitutionServiceTemplate, newNodeTemplateId, getAttrFuncData - .getAttributeName(), outputParameter, context); + .getAttributeName(), outputParameter, context); DataModelUtil.addOutputParameterToTopologyTemplate(substitutionServiceTemplate, - getNewSubstitutionOutputParameterId(newNodeTemplateId, getAttrFuncData.getAttributeName()), - outputParameter); + getNewSubstitutionOutputParameterId(newNodeTemplateId, getAttrFuncData.getAttributeName()), + outputParameter); } private void setOutputParameterType(ServiceTemplate substitutionServiceTemplate, @@ -1375,16 +1407,16 @@ public class UnifiedCompositionService { ParameterDefinition outputParameter, TranslationContext context) { NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(substitutionServiceTemplate, - newNodeTemplateId); + newNodeTemplateId); //Get the type and entry schema of the output parameter from the node type flat hierarchy String outputParameterType = null; EntrySchema outputParameterEntrySchema = null; NodeType nodeTypeWithFlatHierarchy = - HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(), - substitutionServiceTemplate, context); + HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(), + substitutionServiceTemplate, context); //Check if the parameter is present in the attributes AttributeDefinition outputParameterDefinitionFromAttributes = - getOutputParameterDefinitionFromAttributes(nodeTypeWithFlatHierarchy, outputParameterName); + getOutputParameterDefinitionFromAttributes(nodeTypeWithFlatHierarchy, outputParameterName); if (Objects.nonNull(outputParameterDefinitionFromAttributes)) { outputParameterType = outputParameterDefinitionFromAttributes.getType(); outputParameterEntrySchema = outputParameterDefinitionFromAttributes.getEntry_schema(); @@ -1393,7 +1425,7 @@ public class UnifiedCompositionService { // properties and global types are in sync. Ideally the parameter should be found in either // properties or attributes collected from global types PropertyDefinition outputParameterDefinitionFromProperties = - nodeTypeWithFlatHierarchy.getProperties().get(outputParameterName); + nodeTypeWithFlatHierarchy.getProperties().get(outputParameterName); outputParameterType = outputParameterDefinitionFromProperties.getType(); outputParameterEntrySchema = outputParameterDefinitionFromProperties.getEntry_schema(); } @@ -1407,21 +1439,21 @@ public class UnifiedCompositionService { String inputParameterName, TranslationContext context) { NodeType nodeTypeWithFlatHierarchy = - HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(), - serviceTemplate, context); + HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(), + serviceTemplate, context); String parameterType = nodeTypeWithFlatHierarchy.getProperties() - .get(inputParameterName).getType(); + .get(inputParameterName).getType(); return getUnifiedInputParameterType(parameterType); } private AttributeDefinition getOutputParameterDefinitionFromAttributes(NodeType - nodeTypeWithFlatHierarchy, + nodeTypeWithFlatHierarchy, String outputParameterName) { AttributeDefinition outputParameterDefinition = null; if ((Objects.nonNull(nodeTypeWithFlatHierarchy.getAttributes())) - && (nodeTypeWithFlatHierarchy.getAttributes().containsKey(outputParameterName))) { + && (nodeTypeWithFlatHierarchy.getAttributes().containsKey(outputParameterName))) { outputParameterDefinition = - nodeTypeWithFlatHierarchy.getAttributes().get(outputParameterName); + nodeTypeWithFlatHierarchy.getAttributes().get(outputParameterName); } return outputParameterDefinition; } @@ -1430,17 +1462,17 @@ public class UnifiedCompositionService { String unifiedInputParameterType = null; if (Objects.nonNull(parameterType)) { if (parameterType.equalsIgnoreCase(PropertyType.STRING.getDisplayName()) - || parameterType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName()) - || parameterType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName()) - || parameterType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName()) - || parameterType.equalsIgnoreCase(PropertyType.TIMESTAMP.getDisplayName()) - || parameterType.equalsIgnoreCase(PropertyType.NULL.getDisplayName()) - || parameterType.equalsIgnoreCase(PropertyType.SCALAR_UNIT_SIZE.getDisplayName()) - || parameterType.equalsIgnoreCase(PropertyType.SCALAR_UNIT_FREQUENCY.getDisplayName())) { + || parameterType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName()) + || parameterType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName()) + || parameterType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName()) + || parameterType.equalsIgnoreCase(PropertyType.TIMESTAMP.getDisplayName()) + || parameterType.equalsIgnoreCase(PropertyType.NULL.getDisplayName()) + || parameterType.equalsIgnoreCase(PropertyType.SCALAR_UNIT_SIZE.getDisplayName()) + || parameterType.equalsIgnoreCase(PropertyType.SCALAR_UNIT_FREQUENCY.getDisplayName())) { unifiedInputParameterType = parameterType.toLowerCase(); } else if (parameterType.equalsIgnoreCase(PropertyType.MAP.getDisplayName()) - || parameterType.equalsIgnoreCase(PropertyType.LIST.getDisplayName()) - || parameterType.equalsIgnoreCase(PropertyTypeExt.JSON.getDisplayName())) { + || parameterType.equalsIgnoreCase(PropertyType.LIST.getDisplayName()) + || parameterType.equalsIgnoreCase(PropertyTypeExt.JSON.getDisplayName())) { unifiedInputParameterType = PropertyTypeExt.JSON.getDisplayName(); } else { unifiedInputParameterType = parameterType; @@ -1455,26 +1487,26 @@ public class UnifiedCompositionService { } private void addUnifiedSubstitionData(TranslationContext context, ServiceTemplate - serviceTemplate, List<UnifiedCompositionData> unifiedCompositionDataList, String - substituteNodeTemplateId) { + serviceTemplate, List<UnifiedCompositionData> unifiedCompositionDataList, String + substituteNodeTemplateId) { String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate); for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) { //Add compute node template mapping information ComputeTemplateConsolidationData computeTemplateConsolidationData = - unifiedCompositionData.getComputeTemplateConsolidationData(); + unifiedCompositionData.getComputeTemplateConsolidationData(); String computeNodeTemplateId = computeTemplateConsolidationData.getNodeTemplateId(); context.addUnifiedSubstitutionData(serviceTemplateFileName, computeNodeTemplateId, - substituteNodeTemplateId); + substituteNodeTemplateId); //Add Port template mapping information List<PortTemplateConsolidationData> portTemplateConsolidationDataList = - getPortTemplateConsolidationDataList(unifiedCompositionData); + getPortTemplateConsolidationDataList(unifiedCompositionData); if (CollectionUtils.isNotEmpty(portTemplateConsolidationDataList)) { for (PortTemplateConsolidationData portTemplateConsolidationData : - portTemplateConsolidationDataList) { + portTemplateConsolidationDataList) { String oldPortNodeTemplateId = portTemplateConsolidationData.getNodeTemplateId(); context.addUnifiedSubstitutionData(serviceTemplateFileName, oldPortNodeTemplateId, - substituteNodeTemplateId); + substituteNodeTemplateId); } } } @@ -1489,9 +1521,9 @@ public class UnifiedCompositionService { Map<String, Object> indexPropertyValue = new HashMap<>(); Map<String, Object> properties = nodeTemplate.getProperties(); indexPropertyValue.put(ToscaFunctions.GET_PROPERTY.getDisplayName(), - indexValueGetPropertyValue); + indexValueGetPropertyValue); properties.put(ToscaConstants.INDEX_VALUE_PROPERTY_NAME, - indexPropertyValue); + indexPropertyValue); nodeTemplate.setProperties(properties); } @@ -1500,11 +1532,11 @@ public class UnifiedCompositionService { String nodeTypeId, Integer index) { String computeNodeTemplateId = - unifiedCompositionData.getComputeTemplateConsolidationData().getNodeTemplateId(); + unifiedCompositionData.getComputeTemplateConsolidationData().getNodeTemplateId(); NodeTemplate computeNodeTemplate = - DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId); + DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId); String nodeTemplateId = ABSTRACT_NODE_TEMPLATE_ID_PREFIX + DataModelUtil - .getNamespaceSuffix(nodeTypeId); + .getNamespaceSuffix(nodeTypeId); if (Objects.nonNull(index)) { nodeTemplateId = nodeTemplateId + "_" + index.toString(); } @@ -1524,15 +1556,15 @@ public class UnifiedCompositionService { Integer index, TranslationContext context) { String computeNodeTemplateId = - unifiedCompositionData.getComputeTemplateConsolidationData().getNodeTemplateId(); + unifiedCompositionData.getComputeTemplateConsolidationData().getNodeTemplateId(); NodeTemplate computeNodeTemplate = - DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId); + DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId); String computeType = computeNodeTemplate.getType(); String globalSTName = ToscaUtil.getServiceTemplateFileName(Constants - .GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME); + .GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME); String nodeTypeId = ToscaNodeType.ABSTRACT_NODE_TYPE_PREFIX - + DataModelUtil.getNamespaceSuffix(getIndexedGlobalNodeTypeId(computeType, context)); + + DataModelUtil.getNamespaceSuffix(getIndexedGlobalNodeTypeId(computeType, context)); context.updateUsedTimesForNestedComputeNodeType(globalSTName, computeType); @@ -1543,8 +1575,8 @@ public class UnifiedCompositionService { } private String getNewComputeNodeTemplateId( - ServiceTemplate serviceTemplate, - String computeNodeTemplateId) { + ServiceTemplate serviceTemplate, + String computeNodeTemplateId) { return getComputeTypeSuffix(serviceTemplate, computeNodeTemplateId); } @@ -1554,15 +1586,13 @@ public class UnifiedCompositionService { UnifiedCompositionData unifiedCompositionData, String substitutionNodeTypeId, Integer index) { -// String substitutionNodeTypeId = -// getSubstitutionNodeTypeId(serviceTemplate, unifiedCompositionData, index, context); NodeType substitutionNodeType = new ToscaAnalyzerServiceImpl() - .createInitSubstitutionNodeType(substitutionServiceTemplate, - ToscaNodeType.VFC_ABSTRACT_SUBSTITUTE); + .createInitSubstitutionNodeType(substitutionServiceTemplate, + ToscaNodeType.VFC_ABSTRACT_SUBSTITUTE); ServiceTemplate globalSubstitutionServiceTemplate = - HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context); + HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context); DataModelUtil.addNodeType(globalSubstitutionServiceTemplate, substitutionNodeTypeId, - substitutionNodeType); + substitutionNodeType); return substitutionNodeType; } @@ -1575,10 +1605,10 @@ public class UnifiedCompositionService { if (unifiedCompositionDataList.size() > 1) { handleConsolidationPorts(serviceTemplate, substitutionServiceTemplate, - unifiedCompositionDataList, connectedComputeNodeType, context); + unifiedCompositionDataList, connectedComputeNodeType, context); } else { handleSinglePorts(serviceTemplate, substitutionServiceTemplate, connectedComputeNodeType, - unifiedCompositionDataList, context); + unifiedCompositionDataList, context); } } @@ -1589,18 +1619,18 @@ public class UnifiedCompositionService { TranslationContext context) { UnifiedCompositionData unifiedCompositionData = unifiedCompositionDataList.get(0); List<PortTemplateConsolidationData> portTemplateConsolidationDataList = - getPortTemplateConsolidationDataList(unifiedCompositionData); + getPortTemplateConsolidationDataList(unifiedCompositionData); if (CollectionUtils.isEmpty(portTemplateConsolidationDataList)) { return; } for (PortTemplateConsolidationData portTemplateConsolidationData : - portTemplateConsolidationDataList) { + portTemplateConsolidationDataList) { List<EntityConsolidationData> portConsolidationDataList = new ArrayList<>(); portConsolidationDataList.add(portTemplateConsolidationData); handlePortNodeTemplate(serviceTemplate, substitutionServiceTemplate, - portConsolidationDataList, connectedComputeNodeType, - unifiedCompositionData.getComputeTemplateConsolidationData(), - unifiedCompositionDataList, context); + portConsolidationDataList, connectedComputeNodeType, + unifiedCompositionData.getComputeTemplateConsolidationData(), + unifiedCompositionDataList, context); } } @@ -1610,62 +1640,62 @@ public class UnifiedCompositionService { String connectedComputeNodeType, TranslationContext context) { Collection<ComputeTemplateConsolidationData> computeConsolidationDataList = - (Collection) getComputeConsolidationDataList(unifiedCompositionDataList); + (Collection) getComputeConsolidationDataList(unifiedCompositionDataList); Map<String, Set<String>> portIdsPerPortType = UnifiedCompositionUtil - .collectAllPortsFromEachTypesFromComputes(computeConsolidationDataList); + .collectAllPortsFromEachTypesFromComputes(computeConsolidationDataList); for (String portType : portIdsPerPortType.keySet()) { List<EntityConsolidationData> portTemplateConsolidationDataList = - getPortConsolidationDataList(portIdsPerPortType.get(portType), - unifiedCompositionDataList); + getPortConsolidationDataList(portIdsPerPortType.get(portType), + unifiedCompositionDataList); if (CollectionUtils.isEmpty(portTemplateConsolidationDataList)) { continue; } handlePortNodeTemplate(serviceTemplate, substitutionServiceTemplate, - portTemplateConsolidationDataList, connectedComputeNodeType, - unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData(), - unifiedCompositionDataList, context); + portTemplateConsolidationDataList, connectedComputeNodeType, + unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData(), + unifiedCompositionDataList, context); } } private void handlePortNodeTemplate( - ServiceTemplate serviceTemplate, - ServiceTemplate substitutionServiceTemplate, - List<EntityConsolidationData> portTemplateConsolidationDataList, - String connectedComputeNodeType, - ComputeTemplateConsolidationData computeTemplateConsolidationData, - List<UnifiedCompositionData> unifiedCompositionDataList, - TranslationContext context) { + ServiceTemplate serviceTemplate, + ServiceTemplate substitutionServiceTemplate, + List<EntityConsolidationData> portTemplateConsolidationDataList, + String connectedComputeNodeType, + ComputeTemplateConsolidationData computeTemplateConsolidationData, + List<UnifiedCompositionData> unifiedCompositionDataList, + TranslationContext context) { EntityConsolidationData portTemplateConsolidationData = - portTemplateConsolidationDataList.get(0); + portTemplateConsolidationDataList.get(0); NodeTemplate newPortNodeTemplate = getNodeTemplate( - portTemplateConsolidationData.getNodeTemplateId(), serviceTemplate, context).clone(); + portTemplateConsolidationData.getNodeTemplateId(), serviceTemplate, context).clone(); removeConnectivityOut(portTemplateConsolidationData, newPortNodeTemplate); handleProperties(serviceTemplate, newPortNodeTemplate, - substitutionServiceTemplate, UnifiedCompositionEntity.Port, - portTemplateConsolidationDataList, computeTemplateConsolidationData, - unifiedCompositionDataList, context); + substitutionServiceTemplate, UnifiedCompositionEntity.Port, + portTemplateConsolidationDataList, computeTemplateConsolidationData, + unifiedCompositionDataList, context); String newPortNodeTemplateId = - getNewPortNodeTemplateId(portTemplateConsolidationData - .getNodeTemplateId(), connectedComputeNodeType, - computeTemplateConsolidationData); + getNewPortNodeTemplateId(portTemplateConsolidationData + .getNodeTemplateId(), connectedComputeNodeType, + computeTemplateConsolidationData); //Update requirements for relationships between the consolidation entities handleConsolidationEntitiesRequirementConnectivity(newPortNodeTemplateId, newPortNodeTemplate, - serviceTemplate, context); + serviceTemplate, context); DataModelUtil.addNodeTemplate(substitutionServiceTemplate, newPortNodeTemplateId, - newPortNodeTemplate); + newPortNodeTemplate); //Add the node template mapping in the context for handling requirement updation for (EntityConsolidationData data : portTemplateConsolidationDataList) { String newPortTemplateId = getNewPortNodeTemplateId(data.getNodeTemplateId(), - connectedComputeNodeType, computeTemplateConsolidationData); + connectedComputeNodeType, computeTemplateConsolidationData); context.addSubstitutionServiceTemplateUnifiedSubstitutionData(ToscaUtil - .getServiceTemplateFileName(serviceTemplate), data.getNodeTemplateId(), - newPortTemplateId); + .getServiceTemplateFileName(serviceTemplate), data.getNodeTemplateId(), + newPortTemplateId); } } @@ -1677,8 +1707,8 @@ public class UnifiedCompositionService { if (Objects.isNull(nodeTemplate)) { nodeTemplate = context - .getCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate), - nodeTemplateId); + .getCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate), + nodeTemplateId); } return nodeTemplate; @@ -1690,25 +1720,34 @@ public class UnifiedCompositionService { List<UnifiedCompositionData> unifiedCompositionDataList, TranslationContext context) { ComputeTemplateConsolidationData computeTemplateConsolidationData = - unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData(); + unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData(); handleComputeNodeTemplate(serviceTemplate, substitutionServiceTemplate, - unifiedCompositionDataList, context); - return handleComputeNodeType(serviceTemplate, substitutionServiceTemplate, - computeTemplateConsolidationData); + unifiedCompositionDataList, context); + ServiceTemplate globalSubstitutionServiceTemplate = + HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context); + return handleComputeNodeType(serviceTemplate, substitutionServiceTemplate, globalSubstitutionServiceTemplate, + computeTemplateConsolidationData); } private String handleComputeNodeType( - ServiceTemplate serviceTemplate, - ServiceTemplate substitutionServiceTemplate, - ComputeTemplateConsolidationData computeTemplateConsolidationData) { + ServiceTemplate serviceTemplate, + ServiceTemplate substitutionServiceTemplate, + ServiceTemplate globalSubstitutionServiceTemplate, + ComputeTemplateConsolidationData computeTemplateConsolidationData) { NodeTemplate computeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + computeTemplateConsolidationData.getNodeTemplateId()); + String computeNodeTypeId = computeNodeTemplate.getType(); NodeType computeNodeType = - DataModelUtil.getNodeType(serviceTemplate, computeNodeTemplate.getType()); + DataModelUtil.getNodeType(serviceTemplate, computeNodeTypeId); DataModelUtil - .addNodeType(substitutionServiceTemplate, computeNodeTemplate.getType(), computeNodeType); + .addNodeType(substitutionServiceTemplate, computeNodeTypeId, computeNodeType); +// NodeType globalNodeType = new ToscaAnalyzerServiceImpl() +// .createInitSubstitutionNodeType(substitutionServiceTemplate, +// computeNodeType.getDerived_from()); +// DataModelUtil +// .addNodeType(globalSubstitutionServiceTemplate, computeNodeTypeId, globalNodeType); - return computeNodeTemplate.getType(); + return computeNodeTypeId; } private void handleComputeNodeTemplate(ServiceTemplate serviceTemplate, @@ -1716,46 +1755,46 @@ public class UnifiedCompositionService { List<UnifiedCompositionData> unifiedCompositionDataList, TranslationContext context) { ComputeTemplateConsolidationData computeTemplateConsolidationData = - unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData(); + unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData(); NodeTemplate newComputeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()).clone(); + computeTemplateConsolidationData.getNodeTemplateId()).clone(); removeConnectivityOut(computeTemplateConsolidationData, newComputeNodeTemplate); removeVolumeConnectivity(computeTemplateConsolidationData, newComputeNodeTemplate); List<EntityConsolidationData> computeConsoliadtionDataList = - getComputeConsolidationDataList(unifiedCompositionDataList); + getComputeConsolidationDataList(unifiedCompositionDataList); handleProperties(serviceTemplate, newComputeNodeTemplate, - substitutionServiceTemplate, UnifiedCompositionEntity.Compute, - computeConsoliadtionDataList, computeTemplateConsolidationData, unifiedCompositionDataList, - context); + substitutionServiceTemplate, UnifiedCompositionEntity.Compute, + computeConsoliadtionDataList, computeTemplateConsolidationData, unifiedCompositionDataList, + context); String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + computeTemplateConsolidationData.getNodeTemplateId()); //Update requirements for relationships between the consolidation entities handleConsolidationEntitiesRequirementConnectivity(newComputeNodeTemplateId, - newComputeNodeTemplate, - serviceTemplate, context); + newComputeNodeTemplate, + serviceTemplate, context); DataModelUtil - .addNodeTemplate(substitutionServiceTemplate, - newComputeNodeTemplateId, newComputeNodeTemplate); + .addNodeTemplate(substitutionServiceTemplate, + newComputeNodeTemplateId, newComputeNodeTemplate); //Add the node template mapping in the context for handling requirement updation for (EntityConsolidationData data : computeConsoliadtionDataList) { String newComputeTemplateId = getNewComputeNodeTemplateId(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + computeTemplateConsolidationData.getNodeTemplateId()); context.addSubstitutionServiceTemplateUnifiedSubstitutionData(ToscaUtil - .getServiceTemplateFileName(serviceTemplate), data.getNodeTemplateId(), - newComputeTemplateId); + .getServiceTemplateFileName(serviceTemplate), data.getNodeTemplateId(), + newComputeTemplateId); } } private List<EntityConsolidationData> getComputeConsolidationDataList( - List<UnifiedCompositionData> unifiedCompositionDataList) { + List<UnifiedCompositionData> unifiedCompositionDataList) { List<EntityConsolidationData> computeConsolidationDataList = new ArrayList<>(); for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) { computeConsolidationDataList - .add(unifiedCompositionData.getComputeTemplateConsolidationData()); + .add(unifiedCompositionData.getComputeTemplateConsolidationData()); } return computeConsolidationDataList; } @@ -1770,15 +1809,15 @@ public class UnifiedCompositionService { List<UnifiedCompositionData> unifiedCompositionDataList, TranslationContext context) { List<String> propertiesWithIdenticalVal = - consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity, context); + consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity, context); nodeTemplate.setProperties(new HashedMap()); handleNodeTemplateProperties(serviceTemplate, nodeTemplate, substitutionServiceTemplate, - unifiedCompositionEntity, entityConsolidationDataList, computeTemplateConsolidationData, - unifiedCompositionDataList, context); + unifiedCompositionEntity, entityConsolidationDataList, computeTemplateConsolidationData, + unifiedCompositionDataList, context); //Add enrich properties from openecomp node type as input to global and substitution ST handleNodeTypeProperties(substitutionServiceTemplate, - entityConsolidationDataList, nodeTemplate, unifiedCompositionEntity, - computeTemplateConsolidationData, context); + entityConsolidationDataList, nodeTemplate, unifiedCompositionEntity, + computeTemplateConsolidationData, context); } @@ -1787,50 +1826,50 @@ public class UnifiedCompositionService { ServiceTemplate substitutionServiceTemplate, UnifiedCompositionEntity unifiedCompositionEntity, List<EntityConsolidationData> - entityConsolidationDataList, + entityConsolidationDataList, ComputeTemplateConsolidationData - computeTemplateConsolidationData, + computeTemplateConsolidationData, List<UnifiedCompositionData> unifiedCompositionDataList, TranslationContext context) { List<String> propertiesWithIdenticalVal = - consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity, context); + consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity, context); for (EntityConsolidationData entityConsolidationData : entityConsolidationDataList) { String nodeTemplateId = entityConsolidationData.getNodeTemplateId(); Map<String, Object> properties = - DataModelUtil.getNodeTemplateProperties(serviceTemplate, nodeTemplateId); + DataModelUtil.getNodeTemplateProperties(serviceTemplate, nodeTemplateId); if (MapUtils.isEmpty(properties)) { continue; } for (Map.Entry<String, Object> propertyEntry : properties.entrySet()) { NodeType nodeTypeWithFlatHierarchy = - HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(), serviceTemplate, - context); + HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(), serviceTemplate, + context); PropertyDefinition propertyDefinition = - nodeTypeWithFlatHierarchy.getProperties().get(propertyEntry.getKey()); + nodeTypeWithFlatHierarchy.getProperties().get(propertyEntry.getKey()); String propertyType = propertyDefinition.getType(); if (propertiesWithIdenticalVal.contains(propertyEntry.getKey())) { String parameterId = - updateIdenticalProperty(nodeTemplateId, propertyEntry.getKey(), nodeTemplate, - unifiedCompositionEntity, unifiedCompositionDataList); + updateIdenticalProperty(nodeTemplateId, propertyEntry.getKey(), nodeTemplate, + unifiedCompositionEntity, unifiedCompositionDataList); addInputParameter( - parameterId, propertyType, - propertyType.equals(PropertyType.LIST.getDisplayName()) ? propertyDefinition - .getEntry_schema() : null, - substitutionServiceTemplate); + parameterId, propertyType, + propertyType.equals(PropertyType.LIST.getDisplayName()) ? propertyDefinition + .getEntry_schema() : null, + substitutionServiceTemplate); } else { Optional<String> parameterId = - updateProperty(serviceTemplate, nodeTemplateId, nodeTemplate, propertyEntry, - unifiedCompositionEntity, computeTemplateConsolidationData, - unifiedCompositionDataList, - context); + updateProperty(serviceTemplate, nodeTemplateId, nodeTemplate, propertyEntry, + unifiedCompositionEntity, computeTemplateConsolidationData, + unifiedCompositionDataList, + context); //todo - define list of type which will match the node property type (instead of string) addPropertyInputParameter(propertyType, substitutionServiceTemplate, propertyDefinition - .getEntry_schema(), - parameterId, unifiedCompositionEntity, context); + .getEntry_schema(), + parameterId, unifiedCompositionEntity, context); } } } @@ -1841,7 +1880,7 @@ public class UnifiedCompositionService { NodeTemplate nodeTemplate, UnifiedCompositionEntity compositionEntity, ComputeTemplateConsolidationData - computeTemplateConsolidationData, + computeTemplateConsolidationData, TranslationContext context) { ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl(); Optional<NodeType> enrichNodeType; @@ -1849,8 +1888,8 @@ public class UnifiedCompositionService { if (compositionEntity.equals(UnifiedCompositionEntity.Port)) { enrichNodeType = - toscaAnalyzerService.fetchNodeType(ToscaNodeType.NETWORK_PORT, - context.getGlobalServiceTemplates().values()); + toscaAnalyzerService.fetchNodeType(ToscaNodeType.NETWORK_PORT, + context.getGlobalServiceTemplates().values()); enrichProperties = context.getEnrichPortResourceProperties(); if (!enrichNodeType.isPresent() || Objects.isNull(enrichProperties)) { return; @@ -1864,9 +1903,9 @@ public class UnifiedCompositionService { if (Objects.nonNull(enrichNodeTypeProperties)) { for (String enrichPropertyName : enrichProperties) { handleEntityConsolidationDataNodeTypeProperties( - enrichPropertyName, substitutionServiceTemplate, - enrichNodeType.get(), nodeTemplate, compositionEntity, computeTemplateConsolidationData, - entityConsolidationDataList, nodeTemplateProperties, context); + enrichPropertyName, substitutionServiceTemplate, + enrichNodeType.get(), nodeTemplate, compositionEntity, computeTemplateConsolidationData, + entityConsolidationDataList, nodeTemplateProperties, context); } } } @@ -1887,14 +1926,14 @@ public class UnifiedCompositionService { String nodeTemplateId = entityConsolidationData.getNodeTemplateId(); String inputParamId = - getParameterId(nodeTemplateId, nodeTemplate, enrichPropertyName, - compositionEntity, computeTemplateConsolidationData); + getParameterId(nodeTemplateId, nodeTemplate, enrichPropertyName, + compositionEntity, computeTemplateConsolidationData); Map<String, String> propertyValMap = new HashMap<>(); context - .addNewPropertyIdToNodeTemplate( - ToscaUtil.getServiceTemplateFileName(substitutionServiceTemplate), - inputParamId, nodeTemplateProperties.get(enrichPropertyName)); + .addNewPropertyIdToNodeTemplate( + ToscaUtil.getServiceTemplateFileName(substitutionServiceTemplate), + inputParamId, nodeTemplateProperties.get(enrichPropertyName)); if (nodeTemplateProperties.containsKey(enrichPropertyName)) { handleExistingEnrichedProperty(enrichPropertyName, nodeTemplateProperties, inputParamId); @@ -1903,11 +1942,11 @@ public class UnifiedCompositionService { nodeTemplate.getProperties().put(enrichPropertyName, propertyValMap); } propertyType = - enrichNodeType.getProperties().get(enrichPropertyName).getType(); + enrichNodeType.getProperties().get(enrichPropertyName).getType(); addPropertyInputParameter(propertyType, substitutionServiceTemplate, enrichNodeType - .getProperties().get(enrichPropertyName).getEntry_schema(), - Optional.of(inputParamId), compositionEntity, context); + .getProperties().get(enrichPropertyName).getEntry_schema(), + Optional.of(inputParamId), compositionEntity, context); } } @@ -1942,35 +1981,35 @@ public class UnifiedCompositionService { UnifiedCompositionEntity unifiedCompositionEntity, TranslationContext context) { if (parameterId.isPresent() && - isParameterBelongsToEnrichedPortProperties(parameterId.get(), context)) { + isParameterBelongsToEnrichedPortProperties(parameterId.get(), context)) { addInputParameter(parameterId.get(), - propertyType, - propertyType.equals(PropertyType.LIST.getDisplayName()) ? entrySchema : null, - substitutionServiceTemplate); + propertyType, + propertyType.equals(PropertyType.LIST.getDisplayName()) ? entrySchema : null, + substitutionServiceTemplate); } else if (isPropertySimpleType(propertyType)) { parameterId - .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue, - PropertyType.LIST.getDisplayName(), - DataModelUtil - .createEntrySchema(propertyType.toLowerCase(), null, null), - substitutionServiceTemplate)); + .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue, + PropertyType.LIST.getDisplayName(), + DataModelUtil + .createEntrySchema(propertyType.toLowerCase(), null, null), + substitutionServiceTemplate)); } else if (propertyType.equals(PropertyTypeExt.JSON.getDisplayName()) || - (Objects.nonNull(entrySchema) && isPropertySimpleType(entrySchema.getType()))) { + (Objects.nonNull(entrySchema) && isPropertySimpleType(entrySchema.getType()))) { parameterId - .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue, - PropertyType.LIST.getDisplayName(), - DataModelUtil - .createEntrySchema(PropertyTypeExt.JSON.getDisplayName(), null, null), - substitutionServiceTemplate)); + .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue, + PropertyType.LIST.getDisplayName(), + DataModelUtil + .createEntrySchema(PropertyTypeExt.JSON.getDisplayName(), null, null), + substitutionServiceTemplate)); } else { parameterId - .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue, - analyzeParameterType(propertyType), - DataModelUtil - .createEntrySchema(analyzeEntrySchemaType(propertyType, entrySchema), - null, null), - substitutionServiceTemplate)); + .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue, + analyzeParameterType(propertyType), + DataModelUtil + .createEntrySchema(analyzeEntrySchemaType(propertyType, entrySchema), + null, null), + substitutionServiceTemplate)); } } @@ -1989,20 +2028,20 @@ public class UnifiedCompositionService { private boolean isPropertySimpleType(String propertyType) { return !Objects.isNull(propertyType) && - (propertyType.equalsIgnoreCase(PropertyType.STRING.getDisplayName()) - || propertyType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName()) - || propertyType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName()) - || propertyType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName())); + (propertyType.equalsIgnoreCase(PropertyType.STRING.getDisplayName()) + || propertyType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName()) + || propertyType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName()) + || propertyType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName())); } private String analyzeParameterType(String propertyType) { return propertyType.equalsIgnoreCase(PropertyType.LIST.getDisplayName()) ? PropertyType.LIST - .getDisplayName() : propertyType; + .getDisplayName() : propertyType; } private String analyzeEntrySchemaType(String propertyType, EntrySchema entrySchema) { return propertyType.equalsIgnoreCase(PropertyType.LIST.getDisplayName()) ? - entrySchema.getType() : null; + entrySchema.getType() : null; } private void handleConsolidationEntitiesRequirementConnectivity(String nodeTemplateId, @@ -2011,7 +2050,7 @@ public class UnifiedCompositionService { TranslationContext context) { Map<String, RequirementAssignment> updatedNodeTemplateRequirements = new HashMap<>(); List<Map<String, RequirementAssignment>> nodeTemplateRequirements = DataModelUtil - .getNodeTemplateRequirementList(nodeTemplate); + .getNodeTemplateRequirementList(nodeTemplate); if (CollectionUtils.isEmpty(nodeTemplateRequirements)) { return; } @@ -2021,8 +2060,8 @@ public class UnifiedCompositionService { RequirementAssignment requirementAssignment = entry.getValue(); String requirementNode = requirementAssignment.getNode(); String unifiedNodeTemplateId = - context.getUnifiedSubstitutionNodeTemplateId(serviceTemplate, - requirementNode); + context.getUnifiedSubstitutionNodeTemplateId(serviceTemplate, + requirementNode); if (unifiedNodeTemplateId != null) { //Update the node id in the requirement requirementAssignment.setNode(unifiedNodeTemplateId); @@ -2042,14 +2081,14 @@ public class UnifiedCompositionService { String relationshipId, TranslationContext context) { Map<String, RelationshipTemplate> relationshipTemplates = DataModelUtil - .getRelationshipTemplates(serviceTemplate); + .getRelationshipTemplates(serviceTemplate); if (relationshipTemplates != null) { RelationshipTemplate relationshipTemplate = relationshipTemplates.get(relationshipId); if (relationshipTemplate != null) { String relationshipTemplateType = relationshipTemplate.getType(); if (relationshipTemplateType.equals(ToscaRelationshipType.CINDER_VOLUME_ATTACHES_TO)) { handleCinderVolumeAttachmentRelationshipTemplate(serviceTemplate, - relationshipTemplate, context); + relationshipTemplate, context); } } } @@ -2057,14 +2096,14 @@ public class UnifiedCompositionService { private void handleCinderVolumeAttachmentRelationshipTemplate(ServiceTemplate - substitutionServiceTemplate, + substitutionServiceTemplate, RelationshipTemplate - relationshipTemplate, + relationshipTemplate, TranslationContext context) { Map<String, Object> properties = relationshipTemplate.getProperties(); properties.computeIfPresent(HeatConstants.INSTANCE_UUID_PROPERTY_NAME, (key, value) -> - context.getUnifiedAbstractNodeTemplateId(substitutionServiceTemplate, - (String) value)); + context.getUnifiedAbstractNodeTemplateId(substitutionServiceTemplate, + (String) value)); } private String updateIdenticalProperty(String nodeTemplateId, String propertyId, @@ -2078,7 +2117,7 @@ public class UnifiedCompositionService { switch (unifiedCompositionEntity) { case Compute: inputParamId = COMPUTE_IDENTICAL_VALUE_PROPERTY_PREFIX + propertyId - + COMPUTE_IDENTICAL_VALUE_PROPERTY_SUFFIX; + + COMPUTE_IDENTICAL_VALUE_PROPERTY_SUFFIX; propertyVal.put(ToscaFunctions.GET_INPUT.getDisplayName(), inputParamId); nodeTemplate.getProperties().put(propertyId, propertyVal); @@ -2088,9 +2127,9 @@ public class UnifiedCompositionService { case Port: String portType = ConsolidationDataUtil.getPortType(nodeTemplateId); ComputeTemplateConsolidationData computeTemplateConsolidationData = - getConnectedComputeConsolidationData(unifiedCompositionDataList, nodeTemplateId); + getConnectedComputeConsolidationData(unifiedCompositionDataList, nodeTemplateId); inputParamId = getInputParamIdForPort(nodeTemplateId, propertyId, portType, - computeTemplateConsolidationData); + computeTemplateConsolidationData); propertyVal.put(ToscaFunctions.GET_INPUT.getDisplayName(), inputParamId); nodeTemplate.getProperties().put(propertyId, propertyVal); @@ -2106,15 +2145,15 @@ public class UnifiedCompositionService { ComputeTemplateConsolidationData computeTemplateConsolidationData) { String inputParamId; if (Objects.isNull(computeTemplateConsolidationData) - || computeTemplateConsolidationData.getPorts().get(portType).size() > 1) { + || computeTemplateConsolidationData.getPorts().get(portType).size() > 1) { inputParamId = - UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + nodeTemplateId + "_" + - propertyId; + UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + nodeTemplateId + "_" + + propertyId; } else { inputParamId = - UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + portType + "_" - + propertyId; + UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + portType + "_" + + propertyId; } return inputParamId; } @@ -2125,36 +2164,36 @@ public class UnifiedCompositionService { ServiceTemplate serviceTemplate) { ParameterDefinition parameterDefinition = DataModelUtil.createParameterDefinition - (parameterType, null, null, - true, null, null, - entrySchema, null); + (parameterType, null, null, + true, null, null, + entrySchema, null); DataModelUtil - .addInputParameterToTopologyTemplate(serviceTemplate, parameterId, parameterDefinition); + .addInputParameterToTopologyTemplate(serviceTemplate, parameterId, parameterDefinition); } // Return the input parameter Id which is used in the new property value if there is one private Optional<String> updateProperty( - ServiceTemplate serviceTemplate, - String nodeTemplateId, NodeTemplate nodeTemplate, - Map.Entry<String, Object> propertyEntry, - UnifiedCompositionEntity compositionEntity, - ComputeTemplateConsolidationData computeTemplateConsolidationData, - List<UnifiedCompositionData> unifiedCompositionDataList, - TranslationContext context) { + ServiceTemplate serviceTemplate, + String nodeTemplateId, NodeTemplate nodeTemplate, + Map.Entry<String, Object> propertyEntry, + UnifiedCompositionEntity compositionEntity, + ComputeTemplateConsolidationData computeTemplateConsolidationData, + List<UnifiedCompositionData> unifiedCompositionDataList, + TranslationContext context) { if (handleGetAttrFromConsolidationNodes(serviceTemplate, nodeTemplateId, nodeTemplate, - propertyEntry, unifiedCompositionDataList, context)) { + propertyEntry, unifiedCompositionDataList, context)) { return Optional.empty(); } String inputParamId = - getParameterId(nodeTemplateId, nodeTemplate, propertyEntry.getKey(), compositionEntity, - computeTemplateConsolidationData); + getParameterId(nodeTemplateId, nodeTemplate, propertyEntry.getKey(), compositionEntity, + computeTemplateConsolidationData); Map<String, List<String>> propertyVal = getPropertyValueInputParam(nodeTemplateId, - nodeTemplate, inputParamId); + nodeTemplate, inputParamId); nodeTemplate.getProperties().put(propertyEntry.getKey(), propertyVal); return Optional.of(inputParamId); } @@ -2171,17 +2210,17 @@ public class UnifiedCompositionService { } private boolean handleGetAttrFromConsolidationNodes( - ServiceTemplate serviceTemplate, - String nodeTemplateId, NodeTemplate nodeTemplate, - Map.Entry<String, Object> propertyEntry, - List<UnifiedCompositionData> unifiedCompositionDataList, - TranslationContext context) { + ServiceTemplate serviceTemplate, + String nodeTemplateId, NodeTemplate nodeTemplate, + Map.Entry<String, Object> propertyEntry, + List<UnifiedCompositionData> unifiedCompositionDataList, + TranslationContext context) { Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType = - getAllConsolidationNodeTemplateIdAndType(unifiedCompositionDataList); + getAllConsolidationNodeTemplateIdAndType(unifiedCompositionDataList); Set<String> consolidationNodeTemplateIds = consolidationNodeTemplateIdAndType.keySet(); Map<String, String> entityIdToType = ConsolidationService.getConsolidationEntityIdToType( - serviceTemplate, context.getConsolidationData()); + serviceTemplate, context.getConsolidationData()); boolean includeGetAttrFromConsolidationNodes = false; boolean includeGetAttrFromOutsideNodes = false; boolean isGetAttrFromConsolidationIsFromSameType = false; @@ -2198,9 +2237,9 @@ public class UnifiedCompositionService { } } if ((includeGetAttrFromConsolidationNodes && includeGetAttrFromOutsideNodes) - || - (includeGetAttrFromConsolidationNodes && isIncludeToscaFunc(propertyEntry.getValue(), - ToscaFunctions.GET_INPUT))) { + || + (includeGetAttrFromConsolidationNodes && isIncludeToscaFunc(propertyEntry.getValue(), + ToscaFunctions.GET_INPUT))) { //This case is currently not supported - this property will be ignored return true; } else if (includeGetAttrFromConsolidationNodes && !isGetAttrFromConsolidationIsFromSameType) { @@ -2210,7 +2249,7 @@ public class UnifiedCompositionService { String targetNodeTemplateId = (String) getAttrFunc.get(0); if (consolidationNodeTemplateIds.contains(targetNodeTemplateId)) { updatePropertyGetAttrFunc(serviceTemplate, unifiedCompositionDataList, context, - consolidationNodeTemplateIdAndType, targetNodeTemplateId, getAttrFunc); + consolidationNodeTemplateIdAndType, targetNodeTemplateId, getAttrFunc); } } nodeTemplate.getProperties().put(propertyEntry.getKey(), clonedPropertyValue); @@ -2222,10 +2261,10 @@ public class UnifiedCompositionService { private boolean isGetAttrFromConsolidationNodesIsFromSameType(String sourceNodeTemplateId, Set<String> nodeTemplateIdsFromConsolidation, Map<String, String> - nodeTemplateIdToType) { + nodeTemplateIdToType) { for (String idFromConsolidation : nodeTemplateIdsFromConsolidation) { if (isGetAttrNodeTemplateFromSameType(sourceNodeTemplateId, idFromConsolidation, - nodeTemplateIdToType)) { + nodeTemplateIdToType)) { return true; } } @@ -2237,26 +2276,26 @@ public class UnifiedCompositionService { Map<String, String> nodeTemplateIdToType) { if (Objects.isNull(nodeTemplateIdToType.get(sourceNodeTemplateId)) - || Objects.isNull(nodeTemplateIdToType.get(targetNodeTemplateId))) { + || Objects.isNull(nodeTemplateIdToType.get(targetNodeTemplateId))) { return false; } return nodeTemplateIdToType.get(sourceNodeTemplateId).equals(nodeTemplateIdToType - .get(targetNodeTemplateId)); + .get(targetNodeTemplateId)); } private void updatePropertyGetAttrFunc( - ServiceTemplate serviceTemplate, - List<UnifiedCompositionData> unifiedCompositionDataList, - TranslationContext context, - Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType, - String targetNodeTemplateId, - List<Object> getAttrFunc) { + ServiceTemplate serviceTemplate, + List<UnifiedCompositionData> unifiedCompositionDataList, + TranslationContext context, + Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType, + String targetNodeTemplateId, + List<Object> getAttrFunc) { UnifiedCompositionEntity targetCompositionEntity = - consolidationNodeTemplateIdAndType.get(targetNodeTemplateId); + consolidationNodeTemplateIdAndType.get(targetNodeTemplateId); String targetNewNodeTemplateId = - getNewNodeTemplateId(serviceTemplate, unifiedCompositionDataList, targetNodeTemplateId, - targetCompositionEntity); + getNewNodeTemplateId(serviceTemplate, unifiedCompositionDataList, targetNodeTemplateId, + targetCompositionEntity); getAttrFunc.set(0, targetNewNodeTemplateId); } @@ -2269,13 +2308,13 @@ public class UnifiedCompositionService { return getNewComputeNodeTemplateId(serviceTemplate, nodeTemplateId); case Port: ComputeTemplateConsolidationData connectedComputeConsolidationData = - getConnectedComputeConsolidationData( - unifiedCompositionDataList, nodeTemplateId); + getConnectedComputeConsolidationData( + unifiedCompositionDataList, nodeTemplateId); NodeTemplate connectedComputeNodeTemplate = - DataModelUtil.getNodeTemplate(serviceTemplate, - connectedComputeConsolidationData.getNodeTemplateId()); + DataModelUtil.getNodeTemplate(serviceTemplate, + connectedComputeConsolidationData.getNodeTemplateId()); return getNewPortNodeTemplateId(nodeTemplateId, connectedComputeNodeTemplate.getType(), - connectedComputeConsolidationData); + connectedComputeConsolidationData); default: return null; } @@ -2288,13 +2327,13 @@ public class UnifiedCompositionService { ConsolidationData consolidationData = context.getConsolidationData(); if (isIdIsOfExpectedType(origNodeTemplateId, UnifiedCompositionEntity.Port, - serviceTemplateFileName, - context)) { + serviceTemplateFileName, + context)) { return handleIdOfPort(origNodeTemplateId, serviceTemplateFileName, consolidationData); } else if (isIdIsOfExpectedType(origNodeTemplateId, UnifiedCompositionEntity.Compute, - serviceTemplateFileName, context)) { + serviceTemplateFileName, context)) { NodeTemplate nodeTemplate = - getComputeNodeTemplate(origNodeTemplateId, serviceTemplate, context); + getComputeNodeTemplate(origNodeTemplateId, serviceTemplate, context); return getComputeTypeSuffix(nodeTemplate.getType()); } @@ -2302,11 +2341,11 @@ public class UnifiedCompositionService { } private ComputeTemplateConsolidationData getConnectedComputeConsolidationData( - List<UnifiedCompositionData> unifiedCompositionDataList, - String portNodeTemplateId) { + List<UnifiedCompositionData> unifiedCompositionDataList, + String portNodeTemplateId) { for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) { Collection<List<String>> portsCollection = - unifiedCompositionData.getComputeTemplateConsolidationData().getPorts().values(); + unifiedCompositionData.getComputeTemplateConsolidationData().getPorts().values(); for (List<String> portIdList : portsCollection) { if (portIdList.contains(portNodeTemplateId)) { return unifiedCompositionData.getComputeTemplateConsolidationData(); @@ -2332,16 +2371,16 @@ public class UnifiedCompositionService { switch (unifiedCompositionEntity) { case Compute: return UnifiedCompositionEntity.Compute.name().toLowerCase() + "_" - + getComputeTypeSuffix(nodeTemplate.getType()) + "_" + propertyId; + + getComputeTypeSuffix(nodeTemplate.getType()) + "_" + propertyId; case Port: String portType = ConsolidationDataUtil.getPortType(nodeTemplateId); if (Objects.isNull(computeTemplateConsolidationData) - || computeTemplateConsolidationData.getPorts().get(portType).size() > 1) { + || computeTemplateConsolidationData.getPorts().get(portType).size() > 1) { return UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + nodeTemplateId + "_" - + propertyId; + + propertyId; } return UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + portType + "_" - + propertyId; + + propertyId; default: return propertyId; } @@ -2354,10 +2393,10 @@ public class UnifiedCompositionService { } for (List<RequirementAssignmentData> requirementAssignmentDataList : entityConsolidationData - .getNodesConnectedOut().values()) { + .getNodesConnectedOut().values()) { for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList) { DataModelUtil.removeRequirementsAssignment(nodeTemplate.getRequirements(), - requirementAssignmentData.getRequirementId()); + requirementAssignmentData.getRequirementId()); } if (nodeTemplate.getRequirements().isEmpty()) { nodeTemplate.setRequirements(null); @@ -2366,17 +2405,17 @@ public class UnifiedCompositionService { } private void removeVolumeConnectivity( - ComputeTemplateConsolidationData computeTemplateConsolidationData, - NodeTemplate computeNodeTemplate) { + ComputeTemplateConsolidationData computeTemplateConsolidationData, + NodeTemplate computeNodeTemplate) { if (MapUtils.isEmpty(computeTemplateConsolidationData.getVolumes())) { return; } Collection<List<RequirementAssignmentData>> volumeCollection = - computeTemplateConsolidationData.getVolumes().values(); + computeTemplateConsolidationData.getVolumes().values(); for (List<RequirementAssignmentData> requirementAssignmentDataList : volumeCollection) { for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList) { DataModelUtil.removeRequirementsAssignment(computeNodeTemplate.getRequirements(), - requirementAssignmentData.getRequirementId()); + requirementAssignmentData.getRequirementId()); } } if (computeNodeTemplate.getRequirements().isEmpty()) { @@ -2386,11 +2425,11 @@ public class UnifiedCompositionService { private void createIndexInputParameter(ServiceTemplate substitutionServiceTemplate) { ParameterDefinition indexParameterDefinition = - DataModelUtil.createParameterDefinition(PropertyType.INTEGER.getDisplayName(), - "Index value of this substitution service template runtime instance", null, - false, createIndexValueConstraint(), null, null, 0); + DataModelUtil.createParameterDefinition(PropertyType.INTEGER.getDisplayName(), + "Index value of this substitution service template runtime instance", null, + false, createIndexValueConstraint(), null, null, 0); DataModelUtil.addInputParameterToTopologyTemplate(substitutionServiceTemplate, - ToscaConstants.INDEX_VALUE_PROPERTY_NAME, indexParameterDefinition); + ToscaConstants.INDEX_VALUE_PROPERTY_NAME, indexParameterDefinition); } @@ -2405,50 +2444,50 @@ public class UnifiedCompositionService { private Optional<UnifiedComposition> getUnifiedCompositionInstance(UnifiedCompositionMode mode) { String unifiedCompositionImplClassName = - unifiedCompositionImplMap.get(mode.name()).getImplementationClass(); + unifiedCompositionImplMap.get(mode.name()).getImplementationClass(); if (StringUtils.isEmpty(unifiedCompositionImplClassName)) { return Optional.empty(); } return Optional - .of(CommonMethods.newInstance(unifiedCompositionImplClassName, UnifiedComposition.class)); + .of(CommonMethods.newInstance(unifiedCompositionImplClassName, UnifiedComposition.class)); } private Optional<Map<String, Object>> createAbstractSubstitutionProperties( - ServiceTemplate serviceTemplate, - ServiceTemplate substitutionServiceTemplate, - List<UnifiedCompositionData> unifiedCompositionDataList, - TranslationContext context) { + ServiceTemplate serviceTemplate, + ServiceTemplate substitutionServiceTemplate, + List<UnifiedCompositionData> unifiedCompositionDataList, + TranslationContext context) { Map<String, Object> abstractSubstituteProperties = new LinkedHashMap<>(); Map<String, ParameterDefinition> substitutionTemplateInputs = DataModelUtil - .getInputParameters(substitutionServiceTemplate); + .getInputParameters(substitutionServiceTemplate); if (substitutionTemplateInputs == null) { return Optional.empty(); } //Since all the computes have the same type fetching the type from the first entry NodeTemplate firstComputeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, - unifiedCompositionDataList.get(0) - .getComputeTemplateConsolidationData().getNodeTemplateId()); + unifiedCompositionDataList.get(0) + .getComputeTemplateConsolidationData().getNodeTemplateId()); String computeType = getComputeTypeSuffix(firstComputeNodeTemplate.getType()); for (Map.Entry<String, ParameterDefinition> input : substitutionTemplateInputs.entrySet()) { String substitutionTemplateInputName = input.getKey(); ParameterDefinition inputParameterDefinition = input.getValue(); String inputType = inputParameterDefinition.getType(); UnifiedCompositionEntity inputUnifiedCompositionEntity = - getInputCompositionEntity(substitutionTemplateInputName); + getInputCompositionEntity(substitutionTemplateInputName); if (!inputType.equalsIgnoreCase(PropertyType.LIST.getDisplayName())) { if (isIdenticalValueProperty( - substitutionTemplateInputName, inputUnifiedCompositionEntity, context)) { + substitutionTemplateInputName, inputUnifiedCompositionEntity, context)) { //Handle identical value properties Optional<String> identicalValuePropertyName = - getIdenticalValuePropertyName(substitutionTemplateInputName, - inputUnifiedCompositionEntity, context); + getIdenticalValuePropertyName(substitutionTemplateInputName, + inputUnifiedCompositionEntity, context); if (identicalValuePropertyName.isPresent()) { updateIdenticalPropertyValue(identicalValuePropertyName.get(), - substitutionTemplateInputName, computeType, inputUnifiedCompositionEntity, - unifiedCompositionDataList.get(0), serviceTemplate, abstractSubstituteProperties, - context); + substitutionTemplateInputName, computeType, inputUnifiedCompositionEntity, + unifiedCompositionDataList.get(0), serviceTemplate, abstractSubstituteProperties, + context); } } continue; @@ -2461,9 +2500,9 @@ public class UnifiedCompositionService { case Compute: for (UnifiedCompositionData compositionData : unifiedCompositionDataList) { ComputeTemplateConsolidationData computeTemplateConsolidationData = - compositionData.getComputeTemplateConsolidationData(); + compositionData.getComputeTemplateConsolidationData(); propertyValue = getComputePropertyValue(substitutionTemplateInputName, - serviceTemplate, computeTemplateConsolidationData); + serviceTemplate, computeTemplateConsolidationData); if (!(propertyValue instanceof Optional)) { abstractPropertyValue.add(propertyValue); } @@ -2472,18 +2511,18 @@ public class UnifiedCompositionService { case Port: for (UnifiedCompositionData compositionData : unifiedCompositionDataList) { List<PortTemplateConsolidationData> portTemplateConsolidationDataList = - getPortTemplateConsolidationDataList(compositionData); + getPortTemplateConsolidationDataList(compositionData); //Get the input type for this input whether it is of type // port_<port_node_template_id>_<property_name> or port_<port_type>_<property_name> PortInputType portInputType = getPortInputType(substitutionTemplateInputName, - compositionData); + compositionData); for (PortTemplateConsolidationData portTemplateConsolidationData : - portTemplateConsolidationDataList) { + portTemplateConsolidationDataList) { //Get the port property value String portNodeTemplateId = portTemplateConsolidationData.getNodeTemplateId(); propertyValue = getPortPropertyValue(substitutionTemplateInputName, - computeType, portInputType, serviceTemplate, - portNodeTemplateId); + computeType, portInputType, serviceTemplate, + portNodeTemplateId); //If the value object is Optional.empty it implies that the property name was not // found in the input name if (!(propertyValue instanceof Optional)) { @@ -2501,7 +2540,7 @@ public class UnifiedCompositionService { for (Object val : abstractPropertyValue) { if (Objects.nonNull(val)) { updateAbstractPropertyValue(substitutionTemplateInputName, inputParameterDefinition, - abstractPropertyValue, abstractSubstituteProperties); + abstractPropertyValue, abstractSubstituteProperties); break; } } @@ -2519,10 +2558,10 @@ public class UnifiedCompositionService { Object propertyValue = abstractPropertyValue.get(0); String entrySchemaType = parameterDefinition.getEntry_schema().getType(); if (entrySchemaType.equalsIgnoreCase(PropertyType.STRING.getDisplayName()) - || entrySchemaType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName()) - || entrySchemaType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName()) - || entrySchemaType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName()) - || entrySchemaType.equals(PropertyTypeExt.JSON.getDisplayName())) { + || entrySchemaType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName()) + || entrySchemaType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName()) + || entrySchemaType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName()) + || entrySchemaType.equals(PropertyTypeExt.JSON.getDisplayName())) { abstractSubstituteProperties.put(substitutionTemplateInputName, abstractPropertyValue); } else { abstractSubstituteProperties.put(substitutionTemplateInputName, propertyValue); @@ -2539,12 +2578,12 @@ public class UnifiedCompositionService { Map<String, Object> abstractSubstituteProperties, TranslationContext context) { Optional<Object> identicalPropertyValueByType = - getIdenticalPropertyValueByType(identicalValuePropertyName, substitutionTemplateInputName, - entity, unifiedCompositionData, serviceTemplate, context); + getIdenticalPropertyValueByType(identicalValuePropertyName, substitutionTemplateInputName, + entity, unifiedCompositionData, serviceTemplate, context); if (identicalPropertyValueByType.isPresent()) { abstractSubstituteProperties - .put(substitutionTemplateInputName, identicalPropertyValueByType.get()); + .put(substitutionTemplateInputName, identicalPropertyValueByType.get()); } @@ -2559,33 +2598,33 @@ public class UnifiedCompositionService { TranslationContext context) { ComputeTemplateConsolidationData computeTemplateConsolidationData = - unifiedCompositionData.getComputeTemplateConsolidationData(); + unifiedCompositionData.getComputeTemplateConsolidationData(); Optional<Object> computeIdenticalPropertyValue; switch (entity) { case Compute: computeIdenticalPropertyValue = - getIdenticalPropertyValue(identicalValuePropertyName, serviceTemplate, - entity, computeTemplateConsolidationData, context); + getIdenticalPropertyValue(identicalValuePropertyName, serviceTemplate, + entity, computeTemplateConsolidationData, context); return computeIdenticalPropertyValue.isPresent() ? Optional.of( - computeIdenticalPropertyValue.get()) : Optional.empty(); + computeIdenticalPropertyValue.get()) : Optional.empty(); case Other: computeIdenticalPropertyValue = - getIdenticalPropertyValue(identicalValuePropertyName, serviceTemplate, - entity, computeTemplateConsolidationData, context); + getIdenticalPropertyValue(identicalValuePropertyName, serviceTemplate, + entity, computeTemplateConsolidationData, context); return computeIdenticalPropertyValue.isPresent() ? Optional.of( - computeIdenticalPropertyValue.get()) : Optional.empty(); + computeIdenticalPropertyValue.get()) : Optional.empty(); case Port: List<PortTemplateConsolidationData> portTemplateConsolidationDataList = - unifiedCompositionData.getPortTemplateConsolidationDataList(); + unifiedCompositionData.getPortTemplateConsolidationDataList(); for (PortTemplateConsolidationData portTemplateConsolidationData : portTemplateConsolidationDataList) { String portType = - ConsolidationDataUtil.getPortType(portTemplateConsolidationData.getNodeTemplateId()); + ConsolidationDataUtil.getPortType(portTemplateConsolidationData.getNodeTemplateId()); if (substitutionTemplateInputName.contains(portType)) { return getIdenticalPropertyValue(identicalValuePropertyName, serviceTemplate, - entity, portTemplateConsolidationData, context); + entity, portTemplateConsolidationData, context); } } } @@ -2599,13 +2638,13 @@ public class UnifiedCompositionService { UnifiedCompositionData unifiedCompositionData) { String portInputPrefix = UnifiedCompositionEntity.Port.name().toLowerCase() + "_"; ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData - .getComputeTemplateConsolidationData(); + .getComputeTemplateConsolidationData(); List<PortTemplateConsolidationData> portTemplateConsolidationDataList = - getPortTemplateConsolidationDataList(unifiedCompositionData); + getPortTemplateConsolidationDataList(unifiedCompositionData); //Scan the available port node template ids to check if the input is of the form // "port_<port_node_template_id>_<property_name>" for (PortTemplateConsolidationData portTemplateConsolidationData : - portTemplateConsolidationDataList) { + portTemplateConsolidationDataList) { String portNodeTemplateId = portTemplateConsolidationData.getNodeTemplateId(); String portNodeTemplateIdPrefix = portInputPrefix + portNodeTemplateId; if (inputName.startsWith(portNodeTemplateIdPrefix)) { @@ -2636,17 +2675,17 @@ public class UnifiedCompositionService { TranslationContext context) { String nodeTemplateIdToRemove = entity.getNodeTemplateId(); Map<String, NodeTemplate> nodeTemplates = - serviceTemplate.getTopology_template().getNode_templates(); + serviceTemplate.getTopology_template().getNode_templates(); NodeTemplate nodeTemplateToRemove = - nodeTemplates.get(nodeTemplateIdToRemove); + nodeTemplates.get(nodeTemplateIdToRemove); nodeTemplates.remove(nodeTemplateIdToRemove); context.addCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate), - nodeTemplateIdToRemove, - entity.getClass() == ComputeTemplateConsolidationData.class - ? UnifiedCompositionEntity.Compute - : UnifiedCompositionEntity.Port, - nodeTemplateToRemove); + nodeTemplateIdToRemove, + entity.getClass() == ComputeTemplateConsolidationData.class + ? UnifiedCompositionEntity.Compute + : UnifiedCompositionEntity.Port, + nodeTemplateToRemove); } @@ -2654,13 +2693,13 @@ public class UnifiedCompositionService { ServiceTemplate serviceTemplate, TranslationContext context) { NodeTemplate cleanedNodeTemplate = - context - .getCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate), - cleanedNodeTemplateId); + context + .getCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate), + cleanedNodeTemplateId); String typeToRemove = cleanedNodeTemplate.getType(); if (Objects.nonNull(typeToRemove) - && serviceTemplate.getNode_types().containsKey(typeToRemove)) { + && serviceTemplate.getNode_types().containsKey(typeToRemove)) { serviceTemplate.getNode_types().remove(typeToRemove); } } @@ -2669,25 +2708,25 @@ public class UnifiedCompositionService { EntityConsolidationData entity, TranslationContext context) { Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template() - .getGroups() == null ? new HashMap<>() - : serviceTemplate.getTopology_template().getGroups(); + .getGroups() == null ? new HashMap<>() + : serviceTemplate.getTopology_template().getGroups(); String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate); String nodeRelatedAbstractNodeId = - context.getUnifiedAbstractNodeTemplateId(serviceTemplate, entity.getNodeTemplateId()); + context.getUnifiedAbstractNodeTemplateId(serviceTemplate, entity.getNodeTemplateId()); for (Map.Entry<String, GroupDefinition> groupEntry : groups.entrySet()) { GroupDefinition groupDefinition = groupEntry.getValue(); if (isHeatStackGroup(groupDefinition.getType())) { updateGroupMembersWithNewUnifiedNodeTemplateId(entity, nodeRelatedAbstractNodeId, - groupEntry); + groupEntry); } } } private void updateGroupMembersWithNewUnifiedNodeTemplateId( - EntityConsolidationData entity, - String newNodetemplateId, - Map.Entry<String, GroupDefinition> groupEntry) { + EntityConsolidationData entity, + String newNodetemplateId, + Map.Entry<String, GroupDefinition> groupEntry) { List<String> members = groupEntry.getValue().getMembers(); if (members.contains(entity.getNodeTemplateId())) { members.remove(entity.getNodeTemplateId()); @@ -2698,37 +2737,56 @@ public class UnifiedCompositionService { groupEntry.getValue().setMembers(members); } + private void updateSubstitutableNodeTemplateRequirements(ServiceTemplate serviceTemplate, + ServiceTemplate substitutionServiceTemplate){ + if(Objects.isNull(substitutionServiceTemplate.getTopology_template())){ + return; + } + + SubstitutionMapping substitution_mappings = + substitutionServiceTemplate.getTopology_template().getSubstitution_mappings(); + + if(Objects.isNull(substitution_mappings)){ + return; + } + + String node_type = substitution_mappings.getNode_type(); + Map<String, List<String>> requirements = substitution_mappings.getRequirements(); + + + } + private void updateSubstitutionMapping(ServiceTemplate serviceTemplate, TranslationContext context) { SubstitutionMapping substitutionMappings = - DataModelUtil.getSubstitutionMappings(serviceTemplate); + DataModelUtil.getSubstitutionMappings(serviceTemplate); if (Objects.nonNull(substitutionMappings)) { if (Objects.nonNull(substitutionMappings.getRequirements())) { updateSubstitutionMappingRequirements(substitutionMappings.getRequirements(), - serviceTemplate, context); + serviceTemplate, context); } if (Objects.nonNull(substitutionMappings.getCapabilities())) { updateSubstitutionMappingCapabilities(substitutionMappings.getCapabilities(), - serviceTemplate, context); + serviceTemplate, context); } } } private void updateSubstitutionMappingRequirements(Map<String, List<String>> - substitutionMappingRequirements, + substitutionMappingRequirements, ServiceTemplate serviceTemplate, TranslationContext context) { for (Map.Entry<String, List<String>> entry : substitutionMappingRequirements.entrySet()) { List<String> requirement = entry.getValue(); String oldNodeTemplateId = requirement.get(0); String newAbstractNodeTemplateId = context.getUnifiedAbstractNodeTemplateId(serviceTemplate, - requirement.get(0)); + requirement.get(0)); String newSubstitutionNodeTemplateId = context.getUnifiedSubstitutionNodeTemplateId( - serviceTemplate, oldNodeTemplateId); + serviceTemplate, oldNodeTemplateId); if (Objects.nonNull(newAbstractNodeTemplateId) - && Objects.nonNull(newSubstitutionNodeTemplateId)) { + && Objects.nonNull(newSubstitutionNodeTemplateId)) { requirement.set(0, newAbstractNodeTemplateId); String newRequirementValue = requirement.get(1) + "_" + newSubstitutionNodeTemplateId; requirement.set(1, newRequirementValue); @@ -2737,18 +2795,18 @@ public class UnifiedCompositionService { } private void updateSubstitutionMappingCapabilities(Map<String, List<String>> - substitutionMappingCapabilities, + substitutionMappingCapabilities, ServiceTemplate serviceTemplate, TranslationContext context) { for (Map.Entry<String, List<String>> entry : substitutionMappingCapabilities.entrySet()) { List<String> capability = entry.getValue(); String oldNodeTemplateId = capability.get(0); String newAbstractNodeTemplateId = context.getUnifiedAbstractNodeTemplateId(serviceTemplate, - capability.get(0)); + capability.get(0)); String newSubstitutionNodeTemplateId = context.getUnifiedSubstitutionNodeTemplateId( - serviceTemplate, oldNodeTemplateId); + serviceTemplate, oldNodeTemplateId); if (Objects.nonNull(newAbstractNodeTemplateId) - && Objects.nonNull(newSubstitutionNodeTemplateId)) { + && Objects.nonNull(newSubstitutionNodeTemplateId)) { capability.set(0, newAbstractNodeTemplateId); String newRequirementValue = capability.get(1) + "_" + newSubstitutionNodeTemplateId; capability.set(1, newRequirementValue); @@ -2760,16 +2818,16 @@ public class UnifiedCompositionService { EntityConsolidationData entity, TranslationContext context) { Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template() - .getGroups() == null ? new HashMap<>() : serviceTemplate.getTopology_template().getGroups(); + .getGroups() == null ? new HashMap<>() : serviceTemplate.getTopology_template().getGroups(); String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate); Optional<String> nestedNodeTemplateId = - context.getUnifiedNestedNodeTemplateId(serviceTemplateFileName, entity.getNodeTemplateId()); + context.getUnifiedNestedNodeTemplateId(serviceTemplateFileName, entity.getNodeTemplateId()); if (nestedNodeTemplateId.isPresent()) { for (Map.Entry<String, GroupDefinition> groupEntry : groups.entrySet()) { GroupDefinition groupDefinition = groupEntry.getValue(); if (isHeatStackGroup(groupDefinition.getType())) { updateGroupMembersWithNewUnifiedNodeTemplateId(entity, nestedNodeTemplateId.get(), - groupEntry); + groupEntry); } } } @@ -2780,7 +2838,7 @@ public class UnifiedCompositionService { ServiceTemplate nestedServiceTemplate, TranslationContext context) { NodeTemplate nestedNodeTemplate = DataModelUtil.getNodeTemplate(mainServiceTemplate, - nestedNodeTemplateId); + nestedNodeTemplateId); if (Objects.isNull(nestedNodeTemplate)) { return; } @@ -2788,13 +2846,124 @@ public class UnifiedCompositionService { updateNestedNodeTemplateProperties(nestedServiceTemplate, nestedNodeTemplate, context); Optional<String> unifiedNestedNodeTypeId = context - .getUnifiedNestedNodeTypeId( - ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), - nestedNodeTemplate.getType()); + .getUnifiedNestedNodeTypeId( + ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), + nestedNodeTemplate.getType()); unifiedNestedNodeTypeId - .ifPresent(unifiedNestedNodeTypeIdVal -> updateNestedNodeTemplate( - unifiedNestedNodeTypeIdVal, nestedNodeTemplateId, nestedNodeTemplate, - mainServiceTemplate, context)); + .ifPresent(unifiedNestedNodeTypeIdVal -> updateNestedNodeTemplate( + unifiedNestedNodeTypeIdVal, nestedNodeTemplateId, nestedNodeTemplate, + mainServiceTemplate, context)); + + updateNodeTemplateRequirements(nestedNodeTemplateId, mainServiceTemplate, + nestedServiceTemplate, context); + + //updateNodeDependencyRequirement(mainServiceTemplate, context, nestedNodeTemplate); + } + + public void updateNodeTemplateRequirements(String nestedNodeTemplateId, + ServiceTemplate mainServiceTemplate, + ServiceTemplate nestedServiceTemplate, + TranslationContext context){ + String computeNodeType = nestedServiceTemplate.getNode_types().keySet().iterator().next(); + NodeTemplate nestedNtFromMain = + mainServiceTemplate.getTopology_template().getNode_templates().get(nestedNodeTemplateId); + ServiceTemplate globalSubstitutionServiceTemplate = + context.getGlobalSubstitutionServiceTemplate(); + + if(Objects.isNull(computeNodeType)){ + return; + } + + NodeType nestedNodeType = + globalSubstitutionServiceTemplate.getNode_types().get(computeNodeType); + + if(Objects.isNull(nestedNodeType)){ + return; + } + + List<Map<String, RequirementDefinition>> requirements = nestedNodeType.getRequirements(); + + if(CollectionUtils.isEmpty(nestedNtFromMain.getRequirements())){ + nestedNtFromMain.setRequirements(new ArrayList<>()); + } + + if(CollectionUtils.isEmpty(requirements)) { + return; + } + + updateNodeTemplateRequirements(nestedNtFromMain, requirements); + } + + private void updateNodeTemplateRequirements(NodeTemplate nestedNtFromMain, + List<Map<String, RequirementDefinition>> requirements) { + for(Map<String, RequirementDefinition> requirementDefinitionMap : requirements){ + Map<String, RequirementAssignment> currReqAssignmentMap = new HashMap<>(); + for(Map.Entry<String, RequirementDefinition> requirementDefinitionEntry : + requirementDefinitionMap.entrySet()){ + RequirementAssignment requirementAssignment = + getRequirementAssignmentFromDefinition(requirementDefinitionEntry); + currReqAssignmentMap.put(requirementDefinitionEntry.getKey(), requirementAssignment); + } + + if(!nestedNtFromMain.getRequirements().contains(currReqAssignmentMap)) { + nestedNtFromMain.getRequirements().add(new HashMap(currReqAssignmentMap)); + } + } + + List<Map<String, RequirementAssignment>> reqsToRemove = new ArrayList<>(); + for(Map<String, RequirementAssignment> requirementDefinitionMap : nestedNtFromMain.getRequirements()) { + if (requirementDefinitionMap.containsKey("dependency")) { + reqsToRemove.add(requirementDefinitionMap); + } + } + + nestedNtFromMain.getRequirements().removeAll(reqsToRemove); + } + + private RequirementAssignment getRequirementAssignmentFromDefinition( + Map.Entry<String, RequirementDefinition> requirementDefinitionEntry) { + + RequirementAssignment requirementAssignment = new RequirementAssignment(); + if(requirementDefinitionEntry.getValue() instanceof RequirementDefinition) { + requirementAssignment.setCapability(requirementDefinitionEntry.getValue().getCapability()); + requirementAssignment.setNode(requirementDefinitionEntry.getValue().getNode()); + requirementAssignment.setRelationship(requirementDefinitionEntry.getValue().getRelationship()); + } + else if(requirementDefinitionEntry.getValue() instanceof Map){ + Map<String, Object> reqAsMap = (Map<String, Object>) requirementDefinitionEntry.getValue(); + requirementAssignment.setCapability((String) reqAsMap.get("capability")); + requirementAssignment.setNode((String) reqAsMap.get("node")); + requirementAssignment.setRelationship((String) reqAsMap.get("relationship")); + } + return requirementAssignment; + } + + private void updateNodeDependencyRequirement(ServiceTemplate mainServiceTemplate, + TranslationContext context, + NodeTemplate nestedNodeTemplate) { + List<Map<String, RequirementAssignment>> requirements = nestedNodeTemplate.getRequirements(); + for(int i = 0; i < requirements.size(); i++){ + Map<String, RequirementAssignment> requirementAssignmentMap = requirements.get(i); + Map<String, RequirementAssignment> updatedMap = new HashMap<>(); + for(Map.Entry<String, RequirementAssignment> requirementAssignmentEntry : + requirementAssignmentMap.entrySet()){ + if(requirementAssignmentEntry.getKey().equals("dependency")){ + Optional<String> newReqAssignmentDependencyId = + context.getNewReqAssignmentDependencyId(ToscaUtil.getServiceTemplateFileName + (mainServiceTemplate), requirementAssignmentEntry.getValue()); + + if(newReqAssignmentDependencyId.isPresent()){ + updatedMap.put(newReqAssignmentDependencyId.get(), requirementAssignmentEntry + .getValue()); + } + }else{ + updatedMap.put(requirementAssignmentEntry.getKey(), requirementAssignmentEntry + .getValue()); + } + } + + requirements.add(i, updatedMap); + } } private void updateNestedNodeTemplateProperties(ServiceTemplate nestedServiceTemplate, @@ -2802,8 +2971,8 @@ public class UnifiedCompositionService { TranslationContext context) { Map<String, Object> newPropertyInputParamIds = - context.getAllNewPropertyInputParamIdsPerNodeTenplateId(ToscaUtil - .getServiceTemplateFileName(nestedServiceTemplate)); + context.getAllNewPropertyInputParamIdsPerNodeTenplateId(ToscaUtil + .getServiceTemplateFileName(nestedServiceTemplate)); for (Map.Entry<String, Object> entry : newPropertyInputParamIds.entrySet()) { if (Objects.nonNull(entry.getValue())) { @@ -2813,24 +2982,24 @@ public class UnifiedCompositionService { } String subNodeType = - nestedServiceTemplate.getTopology_template().getSubstitution_mappings().getNode_type(); + nestedServiceTemplate.getTopology_template().getSubstitution_mappings().getNode_type(); nestedNodeTemplate.setType(subNodeType); } private void handleSubstitutionMappingInNestedServiceTemplate( - String newNestedNodeType, - ServiceTemplate nestedServiceTemplate, - TranslationContext context) { + String newNestedNodeType, + ServiceTemplate nestedServiceTemplate, + TranslationContext context) { if (Objects.isNull(newNestedNodeType)) { return; } Set<String> relatedNestedNodeTypeIds = - context.getAllRelatedNestedNodeTypeIds(); + context.getAllRelatedNestedNodeTypeIds(); - SubstitutionMapping substitutionMappings = - nestedServiceTemplate.getTopology_template().getSubstitution_mappings(); + SubstitutionMapping substitutionMappings = + nestedServiceTemplate.getTopology_template().getSubstitution_mappings(); if(!relatedNestedNodeTypeIds.contains(substitutionMappings.getNode_type())) { substitutionMappings.setNode_type(newNestedNodeType); } @@ -2843,43 +3012,43 @@ public class UnifiedCompositionService { TranslationContext context) { String mainSTName = ToscaUtil.getServiceTemplateFileName(mainServiceTemplate); String globalSTName = - ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME); + ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME); int index = - context.getHandledNestedComputeNodeTemplateIndex(globalSTName, newNestedNodeTypeId); + context.getHandledNestedComputeNodeTemplateIndex(globalSTName, newNestedNodeTypeId); String newNodeTemplateId = - Constants.ABSTRACT_NODE_TEMPLATE_ID_PREFIX + getComputeTypeSuffix(newNestedNodeTypeId) - + "_" + index; + Constants.ABSTRACT_NODE_TEMPLATE_ID_PREFIX + getComputeTypeSuffix(newNestedNodeTypeId) + + "_" + index; nestedNodeTemplate.setType(newNestedNodeTypeId); mainServiceTemplate.getTopology_template().getNode_templates().remove(nestedNodeTemplateId); mainServiceTemplate.getTopology_template().getNode_templates() - .put(newNodeTemplateId, nestedNodeTemplate); + .put(newNodeTemplateId, nestedNodeTemplate); context.addUnifiedNestedNodeTemplateId(mainSTName, nestedNodeTemplateId, newNodeTemplateId); } private void handleNestedNodeTypesInGlobalSubstituteServiceTemplate( - String origNestedNodeTypeId, - String newNestedNodeTypeId, - ServiceTemplate globalSubstitutionServiceTemplate, - TranslationContext context) { + String origNestedNodeTypeId, + String newNestedNodeTypeId, + ServiceTemplate globalSubstitutionServiceTemplate, + TranslationContext context) { Set<String> relatedNestedNodeTypeIds = - context.getAllRelatedNestedNodeTypeIds(); + context.getAllRelatedNestedNodeTypeIds(); Map<String, NodeType> nodeTypes = globalSubstitutionServiceTemplate.getNode_types(); if (!relatedNestedNodeTypeIds.contains(origNestedNodeTypeId)) { NodeType nested = DataModelUtil.getNodeType(globalSubstitutionServiceTemplate, - origNestedNodeTypeId); + origNestedNodeTypeId); setNewValuesForNestedNodeType(origNestedNodeTypeId, newNestedNodeTypeId, nested, nodeTypes); } else { NodeType nested = - (NodeType) DataModelUtil.getClonedObject( - DataModelUtil.getNodeType(globalSubstitutionServiceTemplate, origNestedNodeTypeId)); + (NodeType) DataModelUtil.getClonedObject( + DataModelUtil.getNodeType(globalSubstitutionServiceTemplate, origNestedNodeTypeId)); nested.setDerived_from(ToscaNodeType.VFC_ABSTRACT_SUBSTITUTE); nodeTypes.put(newNestedNodeTypeId, nested); } context.addUnifiedNestedNodeTypeId(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME, - origNestedNodeTypeId, newNestedNodeTypeId); + origNestedNodeTypeId, newNestedNodeTypeId); } private void setNewValuesForNestedNodeType(String origNestedNodeType, @@ -2897,22 +3066,22 @@ public class UnifiedCompositionService { ServiceTemplate nestedServiceTemplate, TranslationContext context) { FileComputeConsolidationData fileComputeConsolidationData = - context.getConsolidationData().getComputeConsolidationData() - .getFileComputeConsolidationData( - ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate)); + context.getConsolidationData().getComputeConsolidationData() + .getFileComputeConsolidationData( + ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate)); if (Objects.nonNull(fileComputeConsolidationData)) { String nestedNodeTypePrefix = ToscaNodeType.ABSTRACT_NODE_TYPE_PREFIX + "heat."; return Optional - .of(nestedNodeTypePrefix + getComputeTypeInNestedFile(fileComputeConsolidationData)); + .of(nestedNodeTypePrefix + getComputeTypeInNestedFile(fileComputeConsolidationData)); } return Optional.empty(); } private String getComputeTypeInNestedFile( - FileComputeConsolidationData fileComputeConsolidationData) { + FileComputeConsolidationData fileComputeConsolidationData) { List<TypeComputeConsolidationData> typeComputeConsolidationDatas = - new ArrayList<>(fileComputeConsolidationData.getAllTypeComputeConsolidationData()); + new ArrayList<>(fileComputeConsolidationData.getAllTypeComputeConsolidationData()); if (typeComputeConsolidationDatas.size() == 0) { return null; } else { @@ -2926,20 +3095,20 @@ public class UnifiedCompositionService { String serviceTemplateFileName, NodeTemplate abstractNodeTemplate) { Map<String, Object> properties = - abstractNodeTemplate == null || abstractNodeTemplate.getProperties() == null - ? new HashMap<>() - : abstractNodeTemplate.getProperties(); + abstractNodeTemplate == null || abstractNodeTemplate.getProperties() == null + ? new HashMap<>() + : abstractNodeTemplate.getProperties(); for (Object propertyValue : properties.values()) { List<List<Object>> getAttrList = extractGetAttrFunction(propertyValue); for (List<Object> getAttrFuncValue : getAttrList) { String origNodeTemplateId = (String) getAttrFuncValue.get(0); Optional<String> nestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId(ToscaUtil - .getServiceTemplateFileName(serviceTemplate), origNodeTemplateId); + .getServiceTemplateFileName(serviceTemplate), origNodeTemplateId); if (nestedNodeTemplateId.isPresent()) { getAttrFuncValue.set(0, nestedNodeTemplateId.get()); } else { replaceGetAttrNodeIdAndAttrName(serviceTemplate, context, serviceTemplateFileName, - getAttrFuncValue); + getAttrFuncValue); } } } @@ -2953,17 +3122,17 @@ public class UnifiedCompositionService { String attributeName = (String) getAttrFuncValue.get(1); String unifiedAbstractNodeTemplateId = - context.getUnifiedAbstractNodeTemplateId(serviceTemplate, origNodeTemplateId); + context.getUnifiedAbstractNodeTemplateId(serviceTemplate, origNodeTemplateId); if (Objects.isNull(unifiedAbstractNodeTemplateId)) { return; } String newNodeTemplateId = - getNewNodeTemplateId(origNodeTemplateId, serviceTemplateFileName, serviceTemplate, context); + getNewNodeTemplateId(origNodeTemplateId, serviceTemplateFileName, serviceTemplate, context); String newSubstitutionOutputParameterId = - getNewSubstitutionOutputParameterId(newNodeTemplateId, attributeName); + getNewSubstitutionOutputParameterId(newNodeTemplateId, attributeName); getAttrFuncValue.set(0, unifiedAbstractNodeTemplateId); getAttrFuncValue.set(1, newSubstitutionOutputParameterId); @@ -2973,11 +3142,11 @@ public class UnifiedCompositionService { ServiceTemplate serviceTemplate, TranslationContext context) { NodeTemplate computeNodeTemplate = - DataModelUtil.getNodeTemplate(serviceTemplate, origNodeTemplateId); + DataModelUtil.getNodeTemplate(serviceTemplate, origNodeTemplateId); if (computeNodeTemplate == null) { computeNodeTemplate = - context.getCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate), - origNodeTemplateId); + context.getCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate), + origNodeTemplateId); } return computeNodeTemplate; } @@ -2985,14 +3154,14 @@ public class UnifiedCompositionService { private String handleIdOfPort(String origNodeTemplateId, String serviceTemplateFileName, ConsolidationData consolidationData) { Optional<Pair<String, ComputeTemplateConsolidationData>> - computeTypeAndComputeTemplateByPortId = - getComputeTypeAndComputeTemplateByPortId(origNodeTemplateId, serviceTemplateFileName, - consolidationData); + computeTypeAndComputeTemplateByPortId = + getComputeTypeAndComputeTemplateByPortId(origNodeTemplateId, serviceTemplateFileName, + consolidationData); if (computeTypeAndComputeTemplateByPortId.isPresent()) { Pair<String, ComputeTemplateConsolidationData> computeIdToComputeData = - computeTypeAndComputeTemplateByPortId.get(); + computeTypeAndComputeTemplateByPortId.get(); return getNewPortNodeTemplateId(origNodeTemplateId, computeIdToComputeData.getKey(), - computeIdToComputeData.getValue()); + computeIdToComputeData.getValue()); } return null; @@ -3002,15 +3171,15 @@ public class UnifiedCompositionService { getComputeTypeAndComputeTemplateByPortId(String portId, String serviceTemplateFileName, ConsolidationData consolidationData) { FileComputeConsolidationData fileComputeConsolidationData = - consolidationData.getComputeConsolidationData() - .getFileComputeConsolidationData(serviceTemplateFileName); + consolidationData.getComputeConsolidationData() + .getFileComputeConsolidationData(serviceTemplateFileName); Set<String> computeTypes = - fileComputeConsolidationData.getAllComputeTypes(); + fileComputeConsolidationData.getAllComputeTypes(); for (String computeType : computeTypes) { Collection<ComputeTemplateConsolidationData> computeTemplateConsolidationDatas = - fileComputeConsolidationData.getTypeComputeConsolidationData(computeType) - .getAllComputeTemplateConsolidationData(); + fileComputeConsolidationData.getTypeComputeConsolidationData(computeType) + .getAllComputeTemplateConsolidationData(); for (ComputeTemplateConsolidationData compute : computeTemplateConsolidationDatas) { if (ConsolidationDataUtil.isComputeReferenceToPortId(compute, portId)) { @@ -3027,16 +3196,16 @@ public class UnifiedCompositionService { String serviceTemplateFileName, TranslationContext context) { UnifiedSubstitutionData unifiedSubstitutionData = - context.getUnifiedSubstitutionData().get(serviceTemplateFileName); + context.getUnifiedSubstitutionData().get(serviceTemplateFileName); if (Objects.isNull(unifiedSubstitutionData)) { return false; } UnifiedCompositionEntity actualUnifiedCompositionEntity = - unifiedSubstitutionData.getCleanedNodeTemplateCompositionEntity(id); + unifiedSubstitutionData.getCleanedNodeTemplateCompositionEntity(id); return actualUnifiedCompositionEntity == null ? false - : actualUnifiedCompositionEntity.equals(expectedUnifiedCompositionEntity); + : actualUnifiedCompositionEntity.equals(expectedUnifiedCompositionEntity); } private boolean isHeatStackGroup(String groupType) { @@ -3050,14 +3219,14 @@ public class UnifiedCompositionService { String portNodeTemplateId) { //Get the input prefix to extract the property name from the input name String portInputPrefix = getPortInputPrefix( - portNodeTemplateId, portInputType); + portNodeTemplateId, portInputType); //Get the property name from the input Optional<String> propertyName = getPropertyNameFromInput(inputName, - UnifiedCompositionEntity.Port, computeType, portInputPrefix); + UnifiedCompositionEntity.Port, computeType, portInputPrefix); //Get the property value from the node template if (propertyName.isPresent()) { NodeTemplate portNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, - portNodeTemplateId); + portNodeTemplateId); if (Objects.nonNull(portNodeTemplate)) { return getPropertyValueFromNodeTemplate(propertyName.get(), portNodeTemplate); } @@ -3066,9 +3235,9 @@ public class UnifiedCompositionService { } private Optional<String> getPortTypeFromInput( - String inputName, - String portNodeTemplateId, - ComputeTemplateConsolidationData computeTemplateConsolidationData) { + String inputName, + String portNodeTemplateId, + ComputeTemplateConsolidationData computeTemplateConsolidationData) { String portTypeFromInput = null; String portInputPrefix = UnifiedCompositionEntity.Port.name().toLowerCase() + "_"; String portNodeTemplateIdPrefix = portInputPrefix + portNodeTemplateId; @@ -3087,14 +3256,14 @@ public class UnifiedCompositionService { } private Object getComputePropertyValue( - String inputName, - ServiceTemplate serviceTemplate, - ComputeTemplateConsolidationData computeTemplateConsolidationData) { + String inputName, + ServiceTemplate serviceTemplate, + ComputeTemplateConsolidationData computeTemplateConsolidationData) { NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, - computeTemplateConsolidationData.getNodeTemplateId()); + computeTemplateConsolidationData.getNodeTemplateId()); String nodeType = getComputeTypeSuffix(nodeTemplate.getType()); Optional<String> propertyName = - getPropertyNameFromInput(inputName, UnifiedCompositionEntity.Compute, nodeType, null); + getPropertyNameFromInput(inputName, UnifiedCompositionEntity.Compute, nodeType, null); if (propertyName.isPresent()) { return getPropertyValueFromNodeTemplate(propertyName.get(), nodeTemplate); } @@ -3107,13 +3276,13 @@ public class UnifiedCompositionService { EntityConsolidationData entity, TranslationContext context) { NodeTemplate nodeTemplate = - getNodeTemplate(entity.getNodeTemplateId(), serviceTemplate, context); + getNodeTemplate(entity.getNodeTemplateId(), serviceTemplate, context); Object propertyValueFromNodeTemplate = - getPropertyValueFromNodeTemplate(identicalValuePropertyName, nodeTemplate); + getPropertyValueFromNodeTemplate(identicalValuePropertyName, nodeTemplate); return Objects.isNull(propertyValueFromNodeTemplate) ? Optional.empty() - : Optional.of(propertyValueFromNodeTemplate); + : Optional.of(propertyValueFromNodeTemplate); } private UnifiedCompositionEntity getInputCompositionEntity(String inputName) { @@ -3128,14 +3297,14 @@ public class UnifiedCompositionService { } private Optional<String> getPropertyNameFromInput( - String inputName, - UnifiedCompositionEntity compositionEntity, - String computeType, String portInputPrefix) { + String inputName, + UnifiedCompositionEntity compositionEntity, + String computeType, String portInputPrefix) { String propertyName = null; switch (compositionEntity) { case Compute: propertyName = inputName.substring(inputName.lastIndexOf(computeType) - + computeType.length() + 1); + + computeType.length() + 1); break; case Port: if (inputName.startsWith(portInputPrefix)) { @@ -3149,8 +3318,8 @@ public class UnifiedCompositionService { } private String getPortInputPrefix( - String portNodeTemplateId, - PortInputType portInputType) { + String portNodeTemplateId, + PortInputType portInputType) { String portInputPrefix = UnifiedCompositionEntity.Port.name().toLowerCase() + "_"; String portType = ConsolidationDataUtil.getPortType(portNodeTemplateId); if (portInputType == PortInputType.NodeTemplateId) { @@ -3166,14 +3335,14 @@ public class UnifiedCompositionService { TranslationContext context) { List<String> identicalValuePropertyList = - consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity, context); + consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity, context); StringBuilder builder = getPropertyValueStringBuilder(unifiedCompositionEntity); boolean isMatchingProperty = Pattern.matches(builder.toString(), inputName); return (isMatchingProperty - && isPropertyFromIdenticalValuesList(inputName, unifiedCompositionEntity, - identicalValuePropertyList)); + && isPropertyFromIdenticalValuesList(inputName, unifiedCompositionEntity, + identicalValuePropertyList)); } private boolean isPropertyFromIdenticalValuesList(String inputName, @@ -3182,11 +3351,11 @@ public class UnifiedCompositionService { switch (unifiedCompositionEntity) { case Compute: return identicalValuePropertyList.contains(getIdenticalValuePropertyName(inputName, - unifiedCompositionEntity, null).get()); + unifiedCompositionEntity, null).get()); case Other: return identicalValuePropertyList.contains(getIdenticalValuePropertyName(inputName, - unifiedCompositionEntity, null).get()); + unifiedCompositionEntity, null).get()); case Port: return getPortPropertyNameFromInput(inputName, identicalValuePropertyList).isPresent(); @@ -3207,7 +3376,7 @@ public class UnifiedCompositionService { } private StringBuilder getPropertyValueStringBuilder( - UnifiedCompositionEntity unifiedCompositionEntity) { + UnifiedCompositionEntity unifiedCompositionEntity) { switch (unifiedCompositionEntity) { case Compute: @@ -3251,7 +3420,7 @@ public class UnifiedCompositionService { case Port: return getPortPropertyNameFromInput(input, consolidationService - .getPropertiesWithIdenticalVal(unifiedCompositionEntity, context)); + .getPropertiesWithIdenticalVal(unifiedCompositionEntity, context)); default: return Optional.empty(); @@ -3269,39 +3438,39 @@ public class UnifiedCompositionService { } private Map<String, UnifiedCompositionEntity> getAllConsolidationNodeTemplateIdAndType( - List<UnifiedCompositionData> unifiedCompositionDataList) { + List<UnifiedCompositionData> unifiedCompositionDataList) { Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType = new HashMap<>(); for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) { ComputeTemplateConsolidationData computeTemplateConsolidationData = - unifiedCompositionData.getComputeTemplateConsolidationData(); + unifiedCompositionData.getComputeTemplateConsolidationData(); if (Objects.nonNull(computeTemplateConsolidationData)) { consolidationNodeTemplateIdAndType - .put(computeTemplateConsolidationData.getNodeTemplateId(), - UnifiedCompositionEntity.Compute); + .put(computeTemplateConsolidationData.getNodeTemplateId(), + UnifiedCompositionEntity.Compute); } List<PortTemplateConsolidationData> portTemplateConsolidationDataList = - getPortTemplateConsolidationDataList(unifiedCompositionData); + getPortTemplateConsolidationDataList(unifiedCompositionData); for (PortTemplateConsolidationData portTemplateConsolidationData : - portTemplateConsolidationDataList) { + portTemplateConsolidationDataList) { consolidationNodeTemplateIdAndType.put(portTemplateConsolidationData.getNodeTemplateId(), - UnifiedCompositionEntity.Port); + UnifiedCompositionEntity.Port); } NestedTemplateConsolidationData nestedTemplateConsolidationData = - unifiedCompositionData.getNestedTemplateConsolidationData(); + unifiedCompositionData.getNestedTemplateConsolidationData(); if (Objects.nonNull(nestedTemplateConsolidationData)) { consolidationNodeTemplateIdAndType - .put(nestedTemplateConsolidationData.getNodeTemplateId(), - UnifiedCompositionEntity.Nested); + .put(nestedTemplateConsolidationData.getNodeTemplateId(), + UnifiedCompositionEntity.Nested); } } return consolidationNodeTemplateIdAndType; } private List<PortTemplateConsolidationData> getPortTemplateConsolidationDataList( - UnifiedCompositionData unifiedCompositionData) { + UnifiedCompositionData unifiedCompositionData) { return unifiedCompositionData.getPortTemplateConsolidationDataList() == null ? new - ArrayList<>() : unifiedCompositionData.getPortTemplateConsolidationDataList(); + ArrayList<>() : unifiedCompositionData.getPortTemplateConsolidationDataList(); } private enum PortInputType { diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java index 5c2f3db833..43f4065044 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java @@ -97,10 +97,11 @@ public class TestUtils { Assert.fail("Invalid expected output files directory"); } for (int i = 0; i < fileList.length; i++) { - InputStream serviceTemplateInputStream = FileUtils.getFileInputStream(TestUtils.class - .getClassLoader().getResource(baseDirPath + fileList[i])); - ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject - (serviceTemplateInputStream, ServiceTemplate.class); + + URL resource = TestUtils.class.getClassLoader().getResource(baseDirPath + fileList[i]); + ServiceTemplate serviceTemplate = FileUtils.readViaInputStream(resource, + stream -> toscaExtensionYamlUtil.yamlToObject(stream, ServiceTemplate.class)); + serviceTemplateMap.put(fileList[i], serviceTemplate); } } catch (Exception e) { diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/connectivityBetweenPatterns/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/connectivityBetweenPatterns/out/GlobalSubstitutionTypesServiceTemplate.yaml index 6bd1ea45c8..236504e1e2 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/connectivityBetweenPatterns/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/connectivityBetweenPatterns/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -923,6 +923,1031 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.pcma_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pcm_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_pcm_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_pcma_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_1_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_pcma_server_config_drive: + type: list + required: true + status: SUPPORTED + entry_schema: + type: boolean + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pcma_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_0_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pcm_port_1_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + compute_pcma_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_1_order: + type: integer + required: true + status: SUPPORTED + org.openecomp.resource.vfc.nodes.heat.pcm_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pcm_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + availabilityzone_name: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + port_pcm_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_image_name: + type: string + description: PCRF CM image name + required: true + status: SUPPORTED + port_pcm_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + pcm_server_name: + type: string + description: PCRF CM server name + required: true + status: SUPPORTED + cps_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + oam_net_name: + type: string + description: OAM network name + required: true + status: SUPPORTED + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + server_group: + type: string + required: true + status: SUPPORTED + connectivityChk: + type: json + required: true + status: SUPPORTED + port_pcm_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + oam_net_gw: + type: string + description: CPS network gateway + required: true + status: SUPPORTED + security_group_name: + type: string + description: the name of security group + required: true + status: SUPPORTED + cps_net_ip: + type: string + description: CPS network ip + required: true + status: SUPPORTED + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_flavor_name: + type: string + description: flavor name of PCRF CM instance + required: true + status: SUPPORTED + pcm_vol: + type: string + description: CPS Cluman Cinder Volume + required: true + status: SUPPORTED + port_pcm_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + cps_net_name: + type: string + description: CPS network name + required: true + status: SUPPORTED + oam_net_ip: + type: string + description: OAM network ip + required: true + status: SUPPORTED + oam_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_order: + type: integer + required: true + status: SUPPORTED + attributes: + server_pcm_id: + type: string + description: the pcm nova service id + status: SUPPORTED + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + capabilities: + network.incoming.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_pcm_port_0: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_pcm_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + memory.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_pcm: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_0: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_0: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + endpoint_server_pcm: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_pcm: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_pcm: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_pcm: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_pcm: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.1c1_scalling_instance: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_1c1_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1c1_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_1c1_scalling_instance_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t2_port_network_role_tag: + type: string + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + compute_1c1_scalling_instance_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t2_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_1c1_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_1c1_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1c1_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1c1_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_1c1_t2_port_network_role: + type: string + required: true + status: SUPPORTED + port_1c1_t2_port_order: + type: integer + required: true + status: SUPPORTED + port_1c1_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + compute_1c1_scalling_instance_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t2_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c1_t2_port_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_1c1_scalling_instance_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1c1_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + compute_1c1_scalling_instance_metadata: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1c1_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_order: + type: integer + required: true + status: SUPPORTED + attributes: + 1c1_scalling_instance_1c1_t1_port_tenant_id: + type: string + status: SUPPORTED + 1c1_scalling_instance_instance_name: + type: string + status: SUPPORTED + 1c1_scalling_instance_1c1_t2_port_tenant_id: + type: string + status: SUPPORTED + org.openecomp.resource.vfc.nodes.heat.a_single_1a: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_a_single_1a_metadata: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1a_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1a_t2_port_network_role_tag: + type: string + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_1a_t2_port_network_role: + type: string + required: true + status: SUPPORTED + port_1a_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1a_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1a_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1a_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_1a_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1a_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1a_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + compute_a_single_1a_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_a_single_1a_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_1a_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1a_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1a_t1_port_order: + type: integer + required: true + status: SUPPORTED + port_1a_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1a_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1a_t2_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1a_t2_port_order: + type: integer + required: true + status: SUPPORTED + compute_a_single_1a_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_a_single_1a_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1a_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + attributes: + a_single_1a_instance_name: + type: string + status: SUPPORTED + a_single_1a_1a_t1_port_tenant_id: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.pcma_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -4863,6 +5888,146 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.b_single_1b: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_1b_t1_port_order: + type: integer + required: true + status: SUPPORTED + port_1b_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_network_role: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_order: + type: integer + required: true + status: SUPPORTED + compute_b_single_1b_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1b_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1b_t2_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + compute_b_single_1b_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_b_single_1b_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1b_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1b_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1b_t1_port_value_specs: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1b_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1b_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1b_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1b_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_b_single_1b_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + b_single_1b_instance_name: + type: string + status: SUPPORTED + b_single_1b_1b_t1_port_tenant_id: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.b_single_1b_1: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -5417,3 +6582,143 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.1c2_catalog_instance: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_1c2_t2_port_order: + type: integer + required: true + status: SUPPORTED + compute_1c2_catalog_instance_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c2_t2_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_network_role: + type: string + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1c2_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1c2_t1_port_order: + type: integer + required: true + status: SUPPORTED + port_1c2_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1c2_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1c2_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_1c2_catalog_instance_metadata: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_1c2_catalog_instance_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c2_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1c2_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c2_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1c2_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_1c2_catalog_instance_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c2_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1c2_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + compute_1c2_catalog_instance_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + attributes: + 1c2_catalog_instance_instance_name: + type: string + status: SUPPORTED + 1c2_catalog_instance_1c2_t1_port_tenant_id: + type: string + status: SUPPORTED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/connectivityBetweenPatterns/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/connectivityBetweenPatterns/out/MainServiceTemplate.yaml index efa8626f8d..6ea3983b37 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/connectivityBetweenPatterns/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/connectivityBetweenPatterns/out/MainServiceTemplate.yaml @@ -347,6 +347,28 @@ topology_template: capability: tosca.capabilities.network.Linkable node: nested_network relationship: tosca.relationships.network.LinksTo + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo abstract_1c2_catalog_instance_0: type: org.openecomp.resource.abstract.nodes.1c2_catalog_instance directives: diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/dependencyConnectivity/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/dependencyConnectivity/out/GlobalSubstitutionTypesServiceTemplate.yaml index e44080f340..0adea1712a 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/dependencyConnectivity/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/dependencyConnectivity/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -919,6 +919,1075 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.pcma_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pcm_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_pcm_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_pcma_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_1_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_pcma_server_config_drive: + type: list + required: true + status: SUPPORTED + entry_schema: + type: boolean + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pcma_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_0_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pcm_port_1_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + compute_pcma_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_1_order: + type: integer + required: true + status: SUPPORTED + org.openecomp.resource.vfc.nodes.heat.pcm_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pcm_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + availabilityzone_name: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + port_pcm_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_image_name: + type: string + description: PCRF CM image name + required: true + status: SUPPORTED + port_pcm_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + pcm_server_name: + type: string + description: PCRF CM server name + required: true + status: SUPPORTED + cps_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + oam_net_name: + type: string + description: OAM network name + required: true + status: SUPPORTED + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + server_group: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + oam_net_gw: + type: string + description: CPS network gateway + required: true + status: SUPPORTED + security_group_name: + type: string + description: the name of security group + required: true + status: SUPPORTED + cps_net_ip: + type: string + description: CPS network ip + required: true + status: SUPPORTED + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_flavor_name: + type: string + description: flavor name of PCRF CM instance + required: true + status: SUPPORTED + pcm_vol: + type: string + description: CPS Cluman Cinder Volume + required: true + status: SUPPORTED + port_pcm_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + cps_net_name: + type: string + description: CPS network name + required: true + status: SUPPORTED + oam_net_ip: + type: string + description: OAM network ip + required: true + status: SUPPORTED + oam_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_order: + type: integer + required: true + status: SUPPORTED + attributes: + server_pcm_id: + type: string + description: the pcm nova service id + status: SUPPORTED + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + capabilities: + network.incoming.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_pcm_port_0: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_pcm_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + memory.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_pcm: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_0: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_0: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + endpoint_server_pcm: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_pcm: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_pcm: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_pcm: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_pcm: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.1c1_scalling_instance: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_1c1_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1c1_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_1c1_scalling_instance_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t2_port_network_role_tag: + type: string + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + compute_1c1_scalling_instance_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t2_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_1c1_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_1c1_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1c1_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1c1_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_1c1_t2_port_network_role: + type: string + required: true + status: SUPPORTED + port_1c1_t2_port_order: + type: integer + required: true + status: SUPPORTED + port_1c1_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + compute_1c1_scalling_instance_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t2_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c1_t2_port_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_1c1_scalling_instance_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1c1_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1c1_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_order: + type: integer + required: true + status: SUPPORTED + attributes: + 1c1_scalling_instance_instance_name: + type: string + status: SUPPORTED + 1c1_scalling_instance_1c1_t2_port_tenant_id: + type: string + status: SUPPORTED + org.openecomp.resource.abstract.nodes.heat.nested-no-nova: + derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute + properties: + security_group_name: + type: string + required: true + status: SUPPORTED + net_name: + type: string + required: true + status: SUPPORTED + attributes: + output1: + type: string + status: SUPPORTED + requirements: + - dependency_dependsOn_network: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - dependency_jsa_security_group: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - port_jsa_security_group: + capability: tosca.capabilities.Attachment + node: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + relationship: org.openecomp.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + capabilities: + end_point_dependsOn_network: + type: tosca.capabilities.Endpoint + occurrences: + - 1 + - UNBOUNDED + link_dependsOn_network: + type: tosca.capabilities.network.Linkable + occurrences: + - 1 + - UNBOUNDED + feature_jsa_security_group: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + feature_dependsOn_network: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + attachment_dependsOn_network: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.a_single_1a: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_1a_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1a_t2_port_network_role_tag: + type: string + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_1a_t2_port_network_role: + type: string + required: true + status: SUPPORTED + port_1a_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1a_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1a_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1a_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_1a_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1a_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1a_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + compute_a_single_1a_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_a_single_1a_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_1a_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1a_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1a_t1_port_order: + type: integer + required: true + status: SUPPORTED + port_1a_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1a_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1a_t2_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1a_t2_port_order: + type: integer + required: true + status: SUPPORTED + compute_a_single_1a_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_a_single_1a_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1a_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + attributes: + a_single_1a_instance_name: + type: string + status: SUPPORTED + a_single_1a_1a_t1_port_tenant_id: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.pcma_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -4828,6 +5897,140 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.b_single_1b: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_1b_t1_port_order: + type: integer + required: true + status: SUPPORTED + port_1b_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_network_role: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_order: + type: integer + required: true + status: SUPPORTED + compute_b_single_1b_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1b_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1b_t2_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + compute_b_single_1b_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_b_single_1b_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1b_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1b_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1b_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1b_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1b_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1b_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_b_single_1b_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + b_single_1b_instance_name: + type: string + status: SUPPORTED + b_single_1b_1b_t1_port_tenant_id: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.b_single_1b_1: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -5376,66 +6579,137 @@ node_types: occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.heat.nested-no-nova: - derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute + org.openecomp.resource.vfc.nodes.heat.1c2_catalog_instance: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server properties: - security_group_name: + port_1c2_t2_port_order: + type: integer + required: true + status: SUPPORTED + compute_1c2_catalog_instance_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c2_t2_port_subnetpoolid: type: string required: true status: SUPPORTED - net_name: + port_1c2_t2_port_network_role: + type: string + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1c2_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1c2_t1_port_order: + type: integer + required: true + status: SUPPORTED + port_1c2_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1c2_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1c2_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_1c2_catalog_instance_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c2_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1c2_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c2_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1c2_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_1c2_catalog_instance_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c2_t1_port_network_role_tag: type: string required: true status: SUPPORTED + port_1c2_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + compute_1c2_catalog_instance_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json attributes: - output1: + 1c2_catalog_instance_instance_name: type: string status: SUPPORTED - requirements: - - dependency_dependsOn_network: - capability: tosca.capabilities.Node - node: tosca.nodes.Root - relationship: tosca.relationships.DependsOn - occurrences: - - 0 - - UNBOUNDED - - dependency_jsa_security_group: - capability: tosca.capabilities.Node - node: tosca.nodes.Root - relationship: tosca.relationships.DependsOn - occurrences: - - 0 - - UNBOUNDED - - port_jsa_security_group: - capability: tosca.capabilities.Attachment - node: org.openecomp.resource.cp.nodes.heat.network.neutron.Port - relationship: org.openecomp.relationships.AttachesTo - occurrences: - - 0 - - UNBOUNDED - capabilities: - end_point_dependsOn_network: - type: tosca.capabilities.Endpoint - occurrences: - - 1 - - UNBOUNDED - link_dependsOn_network: - type: tosca.capabilities.network.Linkable - occurrences: - - 1 - - UNBOUNDED - feature_jsa_security_group: - type: tosca.capabilities.Node - occurrences: - - 1 - - UNBOUNDED - feature_dependsOn_network: - type: tosca.capabilities.Node - occurrences: - - 1 - - UNBOUNDED - attachment_dependsOn_network: - type: tosca.capabilities.Attachment - occurrences: - - 1 - - UNBOUNDED + 1c2_catalog_instance_1c2_t1_port_tenant_id: + type: string + status: SUPPORTED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/dependencyConnectivity/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/dependencyConnectivity/out/MainServiceTemplate.yaml index cd041a4083..f917dda694 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/dependencyConnectivity/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/dependencyConnectivity/out/MainServiceTemplate.yaml @@ -166,6 +166,10 @@ topology_template: capability: tosca.capabilities.Node node: nestedWithNoNovaHadDependencyToIt relationship: tosca.relationships.DependsOn + - dependency_1b01_single_1B_b_single_1b: + capability: tosca.capabilities.Node + node: nestedWithNoNovaHadDependencyToIt + relationship: tosca.relationships.DependsOn - link_b_single_1b_1b_t2_port: capability: tosca.capabilities.network.Linkable node: b_single_1b_network @@ -247,10 +251,18 @@ topology_template: capability: tosca.capabilities.Node node: nestedWithNoNovaHadDependencyToIt relationship: tosca.relationships.DependsOn + - dependency_1c102_scalling_instance_1C1_1c1_scalling_instance: + capability: tosca.capabilities.Node + node: nestedWithNoNovaHadDependencyToIt + relationship: tosca.relationships.DependsOn - link_1c1_scalling_instance_1c1_t1_port: capability: tosca.capabilities.network.Linkable node: 1c1_scalling_instance_network relationship: tosca.relationships.network.LinksTo + - dependency_1c101_scalling_instance_1C1_1c1_scalling_instance: + capability: tosca.capabilities.Node + node: nestedWithNoNovaHadDependencyToIt + relationship: tosca.relationships.DependsOn b_single_1b_network: type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net properties: @@ -308,10 +320,28 @@ topology_template: capability: tosca.capabilities.network.Linkable node: nested_network relationship: tosca.relationships.network.LinksTo - - dependency: + - dependency_pcm_port_1: capability: tosca.capabilities.Node - node: nestedWithNoNovaHadDependencyToIt + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo abstract_1c2_catalog_instance_0: type: org.openecomp.resource.abstract.nodes.1c2_catalog_instance directives: @@ -367,6 +397,10 @@ topology_template: capability: tosca.capabilities.Node node: nestedWithNoNovaHadDependencyToIt relationship: tosca.relationships.DependsOn + - dependency_1c2_t1_port_0_1c2_catalog_instance_1c2_t1_port: + capability: tosca.capabilities.Node + node: nestedWithNoNovaHadDependencyToIt + relationship: tosca.relationships.DependsOn - link_1c2_catalog_instance_1c2_t2_port: capability: tosca.capabilities.network.Linkable node: 1c2_catalog_instance_network @@ -428,6 +462,10 @@ topology_template: capability: tosca.capabilities.Node node: nestedWithNoNovaHadDependencyToIt relationship: tosca.relationships.DependsOn + - dependency_1c2_t1_port_1_1c2_catalog_instance_1c2_t1_port: + capability: tosca.capabilities.Node + node: nestedWithNoNovaHadDependencyToIt + relationship: tosca.relationships.DependsOn - link_1c2_catalog_instance_1c2_t2_port: capability: tosca.capabilities.network.Linkable node: 1c2_catalog_instance_network @@ -661,6 +699,10 @@ topology_template: capability: tosca.capabilities.Node node: nestedWithNoNovaHadDependencyToIt relationship: tosca.relationships.DependsOn + - dependency_1a_single_1A_a_single_1a: + capability: tosca.capabilities.Node + node: nestedWithNoNovaHadDependencyToIt + relationship: tosca.relationships.DependsOn - link_a_single_1a_1a_t1_port: capability: tosca.capabilities.network.Linkable node: a_single_1a_network diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/oneAppearancePerPattern/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/oneAppearancePerPattern/out/GlobalSubstitutionTypesServiceTemplate.yaml index 14b52bc131..9bf52dfc8d 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/oneAppearancePerPattern/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/oneAppearancePerPattern/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -919,6 +919,1012 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.pcma_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pcm_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_pcm_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_pcma_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_1_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_pcma_server_config_drive: + type: list + required: true + status: SUPPORTED + entry_schema: + type: boolean + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pcma_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_0_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pcm_port_1_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + compute_pcma_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_1_order: + type: integer + required: true + status: SUPPORTED + org.openecomp.resource.vfc.nodes.heat.pcm_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pcm_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + availabilityzone_name: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + port_pcm_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_image_name: + type: string + description: PCRF CM image name + required: true + status: SUPPORTED + port_pcm_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + pcm_server_name: + type: string + description: PCRF CM server name + required: true + status: SUPPORTED + cps_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + oam_net_name: + type: string + description: OAM network name + required: true + status: SUPPORTED + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + server_group: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + oam_net_gw: + type: string + description: CPS network gateway + required: true + status: SUPPORTED + security_group_name: + type: string + description: the name of security group + required: true + status: SUPPORTED + cps_net_ip: + type: string + description: CPS network ip + required: true + status: SUPPORTED + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_flavor_name: + type: string + description: flavor name of PCRF CM instance + required: true + status: SUPPORTED + pcm_vol: + type: string + description: CPS Cluman Cinder Volume + required: true + status: SUPPORTED + port_pcm_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + cps_net_name: + type: string + description: CPS network name + required: true + status: SUPPORTED + oam_net_ip: + type: string + description: OAM network ip + required: true + status: SUPPORTED + oam_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_order: + type: integer + required: true + status: SUPPORTED + attributes: + server_pcm_id: + type: string + description: the pcm nova service id + status: SUPPORTED + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + capabilities: + network.incoming.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_pcm_port_0: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_pcm_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + memory.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_pcm: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_0: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_0: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + endpoint_server_pcm: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_pcm: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_pcm: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_pcm: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_pcm: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.1c1_scalling_instance: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_1c1_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1c1_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_1c1_scalling_instance_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t2_port_network_role_tag: + type: string + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + compute_1c1_scalling_instance_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t2_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_1c1_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_1c1_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1c1_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1c1_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_1c1_t2_port_network_role: + type: string + required: true + status: SUPPORTED + port_1c1_t2_port_order: + type: integer + required: true + status: SUPPORTED + port_1c1_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + compute_1c1_scalling_instance_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t2_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c1_t2_port_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_1c1_scalling_instance_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1c1_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1c1_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_order: + type: integer + required: true + status: SUPPORTED + attributes: + 1c1_scalling_instance_instance_name: + type: string + status: SUPPORTED + 1c1_scalling_instance_1c1_t2_port_tenant_id: + type: string + status: SUPPORTED + org.openecomp.resource.vfc.nodes.heat.a_single_1a: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_1a_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1a_t2_port_network_role_tag: + type: string + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_1a_t2_port_network_role: + type: string + required: true + status: SUPPORTED + port_1a_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1a_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1a_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1a_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_1a_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1a_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1a_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + compute_a_single_1a_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_a_single_1a_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_1a_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1a_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1a_t1_port_order: + type: integer + required: true + status: SUPPORTED + port_1a_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1a_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1a_t2_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1a_t2_port_order: + type: integer + required: true + status: SUPPORTED + compute_a_single_1a_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_a_single_1a_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1a_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + attributes: + a_single_1a_instance_name: + type: string + status: SUPPORTED + a_single_1a_1a_t1_port_tenant_id: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.pcma_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -4828,6 +5834,140 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.b_single_1b: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_1b_t1_port_order: + type: integer + required: true + status: SUPPORTED + port_1b_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_network_role: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_order: + type: integer + required: true + status: SUPPORTED + compute_b_single_1b_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1b_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1b_t2_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + compute_b_single_1b_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_b_single_1b_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1b_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1b_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1b_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1b_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1b_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1b_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_b_single_1b_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + b_single_1b_instance_name: + type: string + status: SUPPORTED + b_single_1b_1b_t1_port_tenant_id: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.b_single_1b_1: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -5376,3 +6516,137 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.1c2_catalog_instance: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_1c2_t2_port_order: + type: integer + required: true + status: SUPPORTED + compute_1c2_catalog_instance_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c2_t2_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_network_role: + type: string + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1c2_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1c2_t1_port_order: + type: integer + required: true + status: SUPPORTED + port_1c2_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1c2_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1c2_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1c2_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_1c2_catalog_instance_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c2_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1c2_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c2_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1c2_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_1c2_catalog_instance_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c2_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1c2_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + compute_1c2_catalog_instance_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + attributes: + 1c2_catalog_instance_instance_name: + type: string + status: SUPPORTED + 1c2_catalog_instance_1c2_t1_port_tenant_id: + type: string + status: SUPPORTED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/oneAppearancePerPattern/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/oneAppearancePerPattern/out/MainServiceTemplate.yaml index e26ec620a8..edc5d992fe 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/oneAppearancePerPattern/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/oneAppearancePerPattern/out/MainServiceTemplate.yaml @@ -260,6 +260,28 @@ topology_template: capability: tosca.capabilities.network.Linkable node: nested_network relationship: tosca.relationships.network.LinksTo + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo abstract_1c2_catalog_instance_0: type: org.openecomp.resource.abstract.nodes.1c2_catalog_instance directives: diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/twoAppearancePerPatternWithConnectivities/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/twoAppearancePerPatternWithConnectivities/out/GlobalSubstitutionTypesServiceTemplate.yaml index 40d6c556fa..7a2a87119b 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/twoAppearancePerPatternWithConnectivities/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/twoAppearancePerPatternWithConnectivities/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,15 +5,15 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: - org.openecomp.resource.abstract.nodes.heat.nested-no_vfc_v0.1: - derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute + org.openecomp.resource.abstract.nodes.heat.pcm_server_1: + derived_from: org.openecomp.resource.abstract.nodes.VFC properties: - server_group: + port_pcm_port_0_network_role: type: string required: true status: SUPPORTED - connectivityChk: - type: json + port_pcm_port_1_network_role_tag: + type: string required: true status: SUPPORTED availabilityzone_name: @@ -21,34 +21,31 @@ node_types: description: availabilityzone name required: true status: SUPPORTED - oam_net_gw: - type: string - description: CPS network gateway + port_pcm_port_0_vlan_requirements: + type: list required: true status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements pcm_image_name: type: string description: PCRF CM image name required: true status: SUPPORTED - security_group_name: - type: string - description: the name of security group + port_pcm_port_0_order: + type: integer required: true status: SUPPORTED - cps_net_ip: + port_pcm_port_0_subnetpoolid: type: string - description: CPS network ip required: true status: SUPPORTED - pcm_flavor_name: + port_pcm_port_1_subnetpoolid: type: string - description: flavor name of PCRF CM instance required: true status: SUPPORTED - pcm_vol: + port_pcm_port_0_network_role_tag: type: string - description: CPS Cluman Cinder Volume required: true status: SUPPORTED pcm_server_name: @@ -56,61 +53,112 @@ node_types: description: PCRF CM server name required: true status: SUPPORTED - cps_net_name: + cps_net_mask: type: string - description: CPS network name + description: CPS network mask required: true status: SUPPORTED - cps_net_mask: + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + oam_net_name: type: string - description: CPS network mask + description: OAM network name required: true status: SUPPORTED - oam_net_ip: + port_pcm_port_1_network_role: type: string - description: OAM network ip required: true status: SUPPORTED - oam_net_mask: + server_group: type: string - description: CPS network mask required: true status: SUPPORTED - pcma_flavor_name: + connectivityChk: + type: json + required: true + status: SUPPORTED + port_pcm_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + oam_net_gw: type: string + description: CPS network gateway required: true status: SUPPORTED - oam_net_name: + security_group_name: type: string - description: OAM network name + description: the name of security group required: true status: SUPPORTED - pcma_server_name: + cps_net_ip: + type: string + description: CPS network ip + required: true + status: SUPPORTED + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_flavor_name: type: string + description: flavor name of PCRF CM instance required: true status: SUPPORTED - pcma_image_name: + pcm_vol: type: string + description: CPS Cluman Cinder Volume + required: true + status: SUPPORTED + port_pcm_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + cps_net_name: + type: string + description: CPS network name + required: true + status: SUPPORTED + oam_net_ip: + type: string + description: OAM network ip + required: true + status: SUPPORTED + oam_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_order: + type: integer required: true status: SUPPORTED attributes: - portId: + server_pcm_id: type: string + description: the pcm nova service id status: SUPPORTED requirements: - - dependency_pcm_port_2: - capability: tosca.capabilities.Node - node: tosca.nodes.Root - relationship: tosca.relationships.DependsOn - occurrences: - - 0 - - UNBOUNDED - - link_pcm_port_2: - capability: tosca.capabilities.network.Linkable - relationship: tosca.relationships.network.LinksTo - occurrences: - - 1 - - 1 - dependency_pcm_port_1: capability: tosca.capabilities.Node node: tosca.nodes.Root @@ -124,41 +172,14 @@ node_types: occurrences: - 1 - 1 - - dependency_pcm_port_3: - capability: tosca.capabilities.Node - node: tosca.nodes.Root - relationship: tosca.relationships.DependsOn - occurrences: - - 0 - - UNBOUNDED - - link_pcm_port_3: - capability: tosca.capabilities.network.Linkable - relationship: tosca.relationships.network.LinksTo - occurrences: - - 1 - - 1 - - dependency_server_pcma2: - capability: tosca.capabilities.Node - node: tosca.nodes.Root - relationship: tosca.relationships.DependsOn - occurrences: - - 0 - - UNBOUNDED - - local_storage_server_pcma2: - capability: tosca.capabilities.Attachment - node: tosca.nodes.BlockStorage - relationship: tosca.relationships.AttachesTo - occurrences: - - 0 - - UNBOUNDED - - dependency_server_pcma1: + - dependency_server_pcm: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_server_pcma1: + - local_storage_server_pcm: capability: tosca.capabilities.Attachment node: tosca.nodes.BlockStorage relationship: tosca.relationships.AttachesTo @@ -185,13 +206,7 @@ node_types: occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_pcm_port_3: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. - occurrences: - - 1 - - UNBOUNDED - network.incoming.packets.rate_pcm_port_2: + cpu_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: @@ -209,745 +224,1137 @@ node_types: occurrences: - 1 - UNBOUNDED - disk.device.iops_server_pcma2: + memory_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_pcm_port_0: + disk.write.requests_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_pcm_port_3: + network.outpoing.packets_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_pcm_port_2: + disk.device.iops_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.iops_server_pcma1: + memory.resident_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_server_pcma2: + disk.device.write.requests_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_server_pcma1: + disk.device.usage_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_server_pcma2: + disk.allocation_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_server_pcma1: + disk.usage_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_server_pcma1: + disk.device.write.bytes_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_server_pcma2: + disk.root.size_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_server_pcma2: + disk.ephemeral.size_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_server_pcma1: + disk.device.latency_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_server_pcma1: + network.incoming.bytes_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_pcm_port_3: + network.incoming.bytes_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_server_pcma2: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + binding_pcm_port_0: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - - 1 + - 0 - UNBOUNDED - binding_pcm_port_3: + binding_pcm_port_1: type: tosca.capabilities.network.Bindable valid_source_types: - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - 0 - UNBOUNDED - disk.device.latency_server_pcma2: + memory.usage_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_server_pcma2: + disk.read.requests_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_pcm_port_0: + disk.capacity_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.latency_server_pcma1: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + os_server_pcm: + type: tosca.capabilities.OperatingSystem occurrences: - 1 - UNBOUNDED - network.incoming.bytes_pcm_port_2: + disk.read.bytes_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_pcm_port_1: + network.outgoing.packets.rate_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_server_pcma1: + network.outgoing.packets.rate_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_pcm_port_0: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface - occurrences: - - 0 - - UNBOUNDED - binding_pcm_port_1: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface - occurrences: - - 0 - - UNBOUNDED - binding_pcm_port_2: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + feature_pcm_port_1: + type: tosca.capabilities.Node occurrences: - - 0 + - 1 - UNBOUNDED - network.incoming.bytes_pcm_port_3: + network.outgoing.bytes_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_pcm_port_3: + disk.device.read.bytes_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests_server_pcma1: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_pcm_port_0: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - disk.device.read.requests_server_pcma2: + network.outgoing.bytes_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_pcm_port_0: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + attachment_pcm_port_0: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_pcm_port_1: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + attachment_pcm_port_1: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - disk.write.bytes_server_pcma2: + endpoint_server_pcm: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_server_pcma1: + vcpus_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_pcm_port_2: + disk.write.bytes_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_server_pcma2: + disk.iops_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes_server_pcma1: + disk.read.bytes.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_pcm_port_1: - type: tosca.capabilities.Node + disk.device.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_server_pcma1: - type: tosca.capabilities.network.Bindable + scalable_server_pcm: + type: tosca.capabilities.Scalable occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_pcm_port_0: + disk.device.read.bytes.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_server_pcma2: - type: tosca.capabilities.network.Bindable + cpu_util_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_pcm_port_0: - type: tosca.capabilities.Node + disk.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_pcm_port_2: + disk.device.write.bytes.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_pcm_port_3: - type: tosca.capabilities.Node + host_server_pcm: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent occurrences: - 1 - UNBOUNDED - feature_pcm_port_2: - type: tosca.capabilities.Node + cpu.delta_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_pcm_port_1: + network.outgoing.bytes.rate_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_pcm_port_0: - type: tosca.capabilities.Attachment + network.incoming.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_pcm_port_1: - type: tosca.capabilities.Attachment + binding_server_pcm: + type: tosca.capabilities.network.Bindable occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_server_pcma2: + network.outgoing.bytes.rate_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_pcm_port_2: - type: tosca.capabilities.Attachment + disk.device.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_server_pcma1: + network.incoming.packets_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_pcm_port_3: - type: tosca.capabilities.Attachment + instance_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.root.size_server_pcma2: + disk.device.write.requests.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.root.size_server_pcma1: + disk.latency_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.iops_server_pcma2: + disk.device.read.requests_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.iops_server_pcma1: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_server_pcm: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_server_pcma1: + network.incoming.bytes.rate_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_server_pcma2: + disk.write.bytes.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes_server_pcma1: + network.incoming.bytes.rate_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes_server_pcma2: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + org.openecomp.resource.vfc.nodes.heat.1c12_scalling_instance: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_1c1_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + compute_1c12_scalling_instance_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1c1_t1_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + compute_1c12_scalling_instance_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1c1_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + vm_flavor_name: + type: string + required: true + status: SUPPORTED + compute_1c12_scalling_instance_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_network_role: + type: string + required: true + status: SUPPORTED + compute_1c12_scalling_instance_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c1_t1_port_order: + type: integer + required: true + status: SUPPORTED + attributes: + 1c12_scalling_instance_1c1_t1_port_tenant_id: + type: string + status: SUPPORTED + 1c12_scalling_instance_instance_name: + type: string + status: SUPPORTED + org.openecomp.resource.vfc.nodes.heat.a_single_2a: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_a_single_2a_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1a_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_1a_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1a_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1a_t1_port_network_role: + type: string + required: true + status: SUPPORTED + compute_a_single_2a_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1a_t1_port_order: + type: integer + required: true + status: SUPPORTED + compute_a_single_2a_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_1a_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1a_t1_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1a_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + compute_a_single_2a_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_image_name: + type: string + required: true + status: SUPPORTED + port_1a_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_a_single_2a_metadata: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + attributes: + a_single_2a_instance_name: + type: string + status: SUPPORTED + org.openecomp.resource.abstract.nodes.pcma_server: + derived_from: org.openecomp.resource.abstract.nodes.VFC + properties: + port_pcm_port_3_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_2_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_2_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_pcm_port_3_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_3_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pcm_port_3_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_pcm_port_3_order: + type: integer + required: true + status: SUPPORTED + compute_pcma_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pcm_port_2_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_pcm_port_2_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_3_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_2_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_2_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_2_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pcm_port_3_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_3_network_role_tag: + type: string + required: true + status: SUPPORTED + compute_pcma_server_config_drive: + type: list + required: true + status: SUPPORTED + entry_schema: + type: boolean + port_pcm_port_3_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pcma_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_2_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_3_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_2_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pcm_port_2_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_2_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pcm_port_3_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pcma_server_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_pcma_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + requirements: + - dependency_pcma_server: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_pcma_server: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_pcma_server_pcm_port_3: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcma_server_pcm_port_3: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo occurrences: - 1 + - 1 + - dependency_pcma_server_pcm_port_2: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 - UNBOUNDED - cpu_util_server_pcma1: + - link_pcma_server_pcm_port_2: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + capabilities: + cpu.delta_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_server_pcma2: + scalable_pcma_server: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + vcpus_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_server_pcma2: - type: tosca.capabilities.Node + host_pcma_server: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent occurrences: - 1 - UNBOUNDED - memory.usage_server_pcma2: + disk.device.read.requests.rate_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.usage_server_pcma1: + disk.usage_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_server_pcma1: - type: tosca.capabilities.Node + network.outgoing.bytes.rate_pcma_server_pcm_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_server_pcma1: + disk.read.bytes_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_server_pcma2: + disk.iops_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_server_pcma1: + network.outgoing.bytes.rate_pcma_server_pcm_port_2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - endpoint_server_pcma2: + attachment_pcma_server_pcm_port_2: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + endpoint_pcma_server: type: tosca.capabilities.Endpoint.Admin occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_server_pcma2: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_pcma_server: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - endpoint_server_pcma1: - type: tosca.capabilities.Endpoint.Admin + attachment_pcma_server_pcm_port_3: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - cpu.delta_server_pcma1: + network.incoming.bytes.rate_pcma_server_pcm_port_2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu.delta_server_pcma2: + memory.usage_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_server_pcma2: - type: tosca.capabilities.Container - valid_source_types: - - tosca.nodes.SoftwareComponent + network.outgoing.bytes_pcma_server_pcm_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_server_pcma1: - type: tosca.capabilities.Container + binding_pcma_server_pcm_port_3: + type: tosca.capabilities.network.Bindable valid_source_types: - - tosca.nodes.SoftwareComponent + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - - 1 + - 0 - UNBOUNDED - disk.ephemeral.size_server_pcma1: + network.incoming.bytes.rate_pcma_server_pcm_port_3: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.ephemeral.size_server_pcma2: + memory_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests.rate_server_pcma2: + network.outgoing.bytes_pcma_server_pcm_port_2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.latency_server_pcma1: + cpu_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.latency_server_pcma2: + disk.device.write.bytes.rate_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests.rate_server_pcma1: + disk.read.bytes.rate_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_server_pcma2: - type: tosca.capabilities.Scalable + network.incoming.packets_pcma_server_pcm_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_server_pcma1: - type: tosca.capabilities.Scalable + binding_pcma_server_pcm_port_2: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + os_pcma_server: + type: tosca.capabilities.OperatingSystem occurrences: - 1 - UNBOUNDED - disk.device.write.requests_server_pcma1: + network.incoming.packets_pcma_server_pcm_port_2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests_server_pcma2: + network.incoming.packets.rate_pcma_server_pcm_port_3: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - instance_server_pcma2: + network.outgoing.packets.rate_pcma_server_pcm_port_3: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.allocation_server_pcma1: + network.incoming.packets.rate_pcma_server_pcm_port_2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.allocation_server_pcma2: + disk.device.read.requests_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - instance_server_pcma1: + disk.write.bytes.rate_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - os_server_pcma1: - type: tosca.capabilities.OperatingSystem + network.outgoing.packets.rate_pcma_server_pcm_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - os_server_pcma2: - type: tosca.capabilities.OperatingSystem + disk.device.write.requests.rate_pcma_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.capacity_server_pcma1: + cpu_util_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.capacity_server_pcma2: + disk.device.write.bytes_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests_server_pcma1: + disk.device.read.bytes.rate_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests_server_pcma2: + disk.device.usage_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_pcm_port_1: + disk.read.requests_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_pcm_port_0: + disk.allocation_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_pcm_port_2: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_pcma_server_pcm_port_2: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_pcm_port_0: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_pcma_server_pcm_port_3: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - network.incoming.packets_pcm_port_3: + disk.ephemeral.size_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.usage_server_pcma2: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + binding_pcma_server: + type: tosca.capabilities.network.Bindable occurrences: - 1 - UNBOUNDED - network.incoming.packets_pcm_port_2: + disk.latency_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_pcm_port_3: + disk.device.write.requests_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.usage_server_pcma1: + disk.device.read.bytes_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - vcpus_server_pcma1: + disk.device.allocation_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_server_pcma1: + memory.resident_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_pcm_port_1: + disk.root.size_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - vcpus_server_pcma2: + disk.write.bytes_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_server_pcma2: + disk.write.requests_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_server_pcma2: + network.incoming.bytes_pcma_server_pcm_port_2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_server_pcma1: + network.incoming.bytes_pcma_server_pcm_port_3: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_server_pcma2: + disk.write.requests.rate_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_server_pcma1: + disk.device.iops_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_server_pcma1: + instance_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_pcm_port_0: + network.outpoing.packets_pcma_server_pcm_port_3: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_server_pcma2: + disk.device.latency_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_pcm_port_3: + network.outpoing.packets_pcma_server_pcm_port_2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_pcm_port_2: + disk.capacity_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_pcm_port_1: + disk.device.capacity_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.1c12_scalling_instance: - derived_from: org.openecomp.resource.abstract.nodes.VFC + org.openecomp.resource.vfc.nodes.heat.1c11_scalling_instance: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server properties: port_1c1_t1_port_exCP_naming: type: org.openecomp.datatypes.Naming required: true status: SUPPORTED - compute_1c12_scalling_instance_scheduler_hints: - type: list - required: true - status: SUPPORTED - entry_schema: - type: json port_1c1_t1_port_fixed_ips: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.heat.neutron.port.FixedIps - compute_1c12_scalling_instance_name: - type: list - required: true - status: SUPPORTED - entry_schema: - type: string port_1c1_t1_port_vlan_requirements: type: list required: true @@ -970,7 +1377,19 @@ node_types: type: string required: true status: SUPPORTED - compute_1c12_scalling_instance_user_data_format: + compute_1c11_scalling_instance_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_1c11_scalling_instance_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_1c11_scalling_instance_user_data_format: type: list required: true status: SUPPORTED @@ -992,6 +1411,12 @@ node_types: status: SUPPORTED entry_schema: type: string + compute_1c11_scalling_instance_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json port_1c1_t1_port_subnetpoolid: type: string required: true @@ -1004,1473 +1429,1766 @@ node_types: type: string required: true status: SUPPORTED - compute_1c12_scalling_instance_availability_zone: + port_1c1_t1_port_network: type: list required: true status: SUPPORTED entry_schema: type: string - port_1c1_t1_port_network: + port_1c1_t1_port_order: + type: integer + required: true + status: SUPPORTED + attributes: + 1c11_scalling_instance_instance_name: + type: string + status: SUPPORTED + 1c11_scalling_instance_1c1_t1_port_tenant_id: + type: string + status: SUPPORTED + org.openecomp.resource.abstract.nodes.2c2_catalog_instance: + derived_from: org.openecomp.resource.abstract.nodes.VFC + properties: + compute_2c2_catalog_instance_user_data_format: type: list required: true status: SUPPORTED entry_schema: type: string - port_1c1_t1_port_order: + port_1c201_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_2c202_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_2c202_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1c201_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_2c202_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_2c202_port_network_role: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_2c202_port_order: type: integer required: true status: SUPPORTED - attributes: - 1c12_scalling_instance_1c1_t1_port_tenant_id: + port_1c201_port_network_role_tag: type: string + required: true status: SUPPORTED - 1c12_scalling_instance_instance_name: + compute_2c2_catalog_instance_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_2c2_catalog_instance_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c201_port_order: + type: integer + required: true + status: SUPPORTED + port_2c202_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_2c2_catalog_instance_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_2c202_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_2c202_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c201_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1c201_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_2c202_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1c201_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c201_port_network_role: + type: string + required: true + status: SUPPORTED + port_1c201_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + 2c2_catalog_instance_instance_name: type: string status: SUPPORTED requirements: - - dependency_1c12_scalling_instance_1c1_t1_port: + - dependency_2c2_catalog_instance: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_1c12_scalling_instance_1c1_t1_port: + - local_storage_2c2_catalog_instance: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_2c2_catalog_instance_2c202_port: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_2c2_catalog_instance_2c202_port: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 - - dependency_1c12_scalling_instance: + - dependency_2c2_catalog_instance_1c201_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_1c12_scalling_instance: - capability: tosca.capabilities.Attachment - node: tosca.nodes.BlockStorage - relationship: tosca.relationships.AttachesTo + - link_2c2_catalog_instance_1c201_port: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo occurrences: - - 0 - - UNBOUNDED + - 1 + - 1 capabilities: - cpu_1c12_scalling_instance: + network.outgoing.packets.rate_2c2_catalog_instance_1c201_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_1c12_scalling_instance: + instance_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_1c12_scalling_instance_1c1_t1_port: + disk.write.bytes_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.usage_1c12_scalling_instance: + disk.capacity_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests_1c12_scalling_instance: + disk.device.read.bytes.rate_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_1c12_scalling_instance_1c1_t1_port: - type: tosca.capabilities.Node - occurrences: - - 1 - - UNBOUNDED - disk.device.latency_1c12_scalling_instance: + disk.read.bytes_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_1c12_scalling_instance_1c1_t1_port: + disk.write.requests.rate_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_1c12_scalling_instance: + disk.device.read.bytes_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes_1c12_scalling_instance: + disk.device.allocation_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_1c12_scalling_instance: - type: tosca.capabilities.network.Bindable + scalable_2c2_catalog_instance: + type: tosca.capabilities.Scalable occurrences: - 1 - UNBOUNDED - endpoint_1c12_scalling_instance: - type: tosca.capabilities.Endpoint.Admin + disk.device.read.requests_2c2_catalog_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_1c12_scalling_instance: - type: tosca.capabilities.Scalable + network.outgoing.bytes_2c2_catalog_instance_1c201_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - os_1c12_scalling_instance: - type: tosca.capabilities.OperatingSystem + disk.root.size_2c2_catalog_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_1c12_scalling_instance: + disk.device.write.requests_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.allocation_1c12_scalling_instance: + host_2c2_catalog_instance: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + disk.allocation_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_1c12_scalling_instance_1c1_t1_port: + binding_2c2_catalog_instance_1c201_port: type: tosca.capabilities.network.Bindable valid_source_types: - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - 0 - UNBOUNDED - network.incoming.packets_1c12_scalling_instance_1c1_t1_port: + disk.device.write.requests.rate_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_1c12_scalling_instance_1c1_t1_port: - type: tosca.capabilities.Attachment + os_2c2_catalog_instance: + type: tosca.capabilities.OperatingSystem occurrences: - 1 - UNBOUNDED - disk.latency_1c12_scalling_instance: + network.outpoing.packets_2c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_1c12_scalling_instance_1c1_t1_port: + disk.device.write.bytes.rate_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_1c12_scalling_instance: + network.outgoing.bytes.rate_2c2_catalog_instance_1c201_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_1c12_scalling_instance: - type: tosca.capabilities.Container - valid_source_types: - - tosca.nodes.SoftwareComponent + network.incoming.packets.rate_2c2_catalog_instance_1c201_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu.delta_1c12_scalling_instance: + disk.latency_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_1c12_scalling_instance: + disk.iops_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_1c12_scalling_instance: + endpoint_2c2_catalog_instance: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + vcpus_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_1c12_scalling_instance: + network.incoming.bytes_2c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_1c12_scalling_instance: + feature_2c2_catalog_instance_1c201_port: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_2c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests_1c12_scalling_instance: + disk.device.iops_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_1c12_scalling_instance_1c1_t1_port: + attachment_2c2_catalog_instance_1c201_port: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_2c2_catalog_instance_1c201_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.ephemeral.size_1c12_scalling_instance: + disk.device.latency_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_1c12_scalling_instance: + network.outgoing.packets.rate_2c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - instance_1c12_scalling_instance: + disk.read.bytes.rate_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_1c12_scalling_instance: + memory.usage_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.iops_1c12_scalling_instance: + disk.write.bytes.rate_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.iops_1c12_scalling_instance: + disk.device.capacity_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_1c12_scalling_instance: - type: tosca.capabilities.Node + disk.read.requests_2c2_catalog_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_1c12_scalling_instance: + network.outgoing.bytes_2c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes_1c12_scalling_instance: + cpu_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_1c12_scalling_instance: + disk.ephemeral.size_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - vcpus_1c12_scalling_instance: + disk.device.write.bytes_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_1c12_scalling_instance_1c1_t1_port: + memory.resident_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests.rate_1c12_scalling_instance: + disk.device.usage_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_1c12_scalling_instance_1c1_t1_port: + network.outgoing.bytes.rate_2c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests_1c12_scalling_instance: + network.outpoing.packets_2c2_catalog_instance_1c201_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_1c12_scalling_instance_1c1_t1_port: + cpu_util_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_1c12_scalling_instance: + network.incoming.bytes.rate_2c2_catalog_instance_1c201_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.root.size_1c12_scalling_instance: + disk.usage_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.capacity_1c12_scalling_instance: + binding_2c2_catalog_instance_2c202_port: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + feature_2c2_catalog_instance: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_1c12_scalling_instance: + cpu.delta_2c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_1c12_scalling_instance: + network.incoming.packets.rate_2c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.usage_1c12_scalling_instance: + binding_2c2_catalog_instance: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + attachment_2c2_catalog_instance_2c202_port: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_2c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.heat.pcm_server_1: + feature_2c2_catalog_instance_2c202_port: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + memory_2c2_catalog_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_2c2_catalog_instance_1c201_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_2c2_catalog_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.abstract.nodes.1c2_catalog_instance: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: - port_pcm_port_0_network_role: - type: string - required: true - status: SUPPORTED - port_pcm_port_1_network_role_tag: - type: string - required: true - status: SUPPORTED - availabilityzone_name: - type: string - description: availabilityzone name + compute_1c2_catalog_instance_availability_zone: + type: list required: true status: SUPPORTED - port_pcm_port_0_vlan_requirements: + entry_schema: + type: string + port_1c201_port_vlan_requirements: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.network.VlanRequirements - pcm_image_name: + vm_flavor_name: type: string - description: PCRF CM image name required: true status: SUPPORTED - port_pcm_port_0_order: - type: integer + compute_1c2_catalog_instance_personality: + type: list required: true status: SUPPORTED - port_pcm_port_0_subnetpoolid: + entry_schema: + type: json + port_2c202_port_subnetpoolid: type: string required: true status: SUPPORTED - port_pcm_port_1_subnetpoolid: - type: string + port_2c202_port_ip_requirements: + type: list required: true status: SUPPORTED - port_pcm_port_0_network_role_tag: - type: string + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1c201_port_exCP_naming: + type: org.openecomp.datatypes.Naming required: true status: SUPPORTED - pcm_server_name: + port_2c202_port_network_role_tag: type: string - description: PCRF CM server name required: true status: SUPPORTED - cps_net_mask: + port_2c202_port_network_role: type: string - description: CPS network mask - required: true - status: SUPPORTED - port_pcm_port_1_exCP_naming: - type: org.openecomp.datatypes.Naming - required: true - status: SUPPORTED - port_pcm_port_0_exCP_naming: - type: org.openecomp.datatypes.Naming required: true status: SUPPORTED - oam_net_name: + vm_image_name: type: string - description: OAM network name required: true status: SUPPORTED - port_pcm_port_1_network_role: - type: string + port_2c202_port_order: + type: integer required: true status: SUPPORTED - server_group: + port_1c201_port_network_role_tag: type: string required: true status: SUPPORTED - connectivityChk: - type: json + port_1c201_port_order: + type: integer required: true status: SUPPORTED - port_pcm_port_0_ip_requirements: + port_2c202_port_vlan_requirements: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.network.IpRequirements - oam_net_gw: - type: string - description: CPS network gateway - required: true - status: SUPPORTED - security_group_name: - type: string - description: the name of security group - required: true + type: org.openecomp.datatypes.network.VlanRequirements + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 status: SUPPORTED - cps_net_ip: - type: string - description: CPS network ip + constraints: + - greater_or_equal: 0 + compute_1c2_catalog_instance_name: + type: list required: true status: SUPPORTED - port_pcm_port_1_mac_requirements: + entry_schema: + type: string + port_2c202_port_mac_requirements: type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - port_pcm_port_1_vlan_requirements: + port_2c202_port_network: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.network.VlanRequirements - pcm_flavor_name: - type: string - description: flavor name of PCRF CM instance - required: true - status: SUPPORTED - pcm_vol: - type: string - description: CPS Cluman Cinder Volume - required: true - status: SUPPORTED - port_pcm_port_1_ip_requirements: + type: string + port_1c201_port_ip_requirements: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.network.IpRequirements - port_pcm_port_0_mac_requirements: + port_1c201_port_mac_requirements: type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - cps_net_name: - type: string - description: CPS network name + port_2c202_port_exCP_naming: + type: org.openecomp.datatypes.Naming required: true status: SUPPORTED - oam_net_ip: + port_1c201_port_subnetpoolid: type: string - description: OAM network ip required: true status: SUPPORTED - oam_net_mask: + port_1c201_port_network_role: type: string - description: CPS network mask required: true status: SUPPORTED - port_pcm_port_1_order: - type: integer + compute_1c2_catalog_instance_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c201_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_1c2_catalog_instance_scheduler_hints: + type: list required: true status: SUPPORTED + entry_schema: + type: json attributes: - server_pcm_id: + 1c2_catalog_instance_instance_name: + type: string + status: SUPPORTED + 1c2_catalog_instance_1c201_port_tenant_id: type: string - description: the pcm nova service id status: SUPPORTED requirements: - - dependency_pcm_port_1: + - dependency_1c2_catalog_instance: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_pcm_port_1: - capability: tosca.capabilities.network.Linkable - relationship: tosca.relationships.network.LinksTo + - local_storage_1c2_catalog_instance: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo occurrences: - - 1 - - 1 - - dependency_server_pcm: + - 0 + - UNBOUNDED + - dependency_1c2_catalog_instance_1c201_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_server_pcm: - capability: tosca.capabilities.Attachment - node: tosca.nodes.BlockStorage - relationship: tosca.relationships.AttachesTo + - link_1c2_catalog_instance_1c201_port: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo occurrences: - - 0 - - UNBOUNDED - - dependency_pcm_port_0: + - 1 + - 1 + - dependency_1c2_catalog_instance_2c202_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_pcm_port_0: + - link_1c2_catalog_instance_2c202_port: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 capabilities: - network.incoming.packets.rate_pcm_port_0: + disk.device.capacity_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_server_pcm: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + attachment_1c2_catalog_instance_2c202_port: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_pcm_port_1: + network.incoming.bytes.rate_1c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_pcm_port_1: + network.incoming.packets_1c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_server_pcm: + network.incoming.packets.rate_1c2_catalog_instance_1c201_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests_server_pcm: + disk.read.bytes.rate_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_pcm_port_0: + network.incoming.bytes_1c2_catalog_instance_1c201_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.iops_server_pcm: + memory.usage_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_server_pcm: + binding_1c2_catalog_instance_1c201_port: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.write.bytes.rate_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests_server_pcm: + cpu_util_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_server_pcm: + cpu_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_server_pcm: + disk.read.requests_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.usage_server_pcm: + network.outpoing.packets_1c2_catalog_instance_1c201_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_server_pcm: + disk.ephemeral.size_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.root.size_server_pcm: + disk.device.write.bytes_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.ephemeral.size_server_pcm: + memory.resident_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.latency_server_pcm: + disk.device.write.requests.rate_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_pcm_port_0: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + os_1c2_catalog_instance: + type: tosca.capabilities.OperatingSystem occurrences: - 1 - UNBOUNDED - network.incoming.bytes_pcm_port_1: + disk.device.iops_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_pcm_port_0: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface - occurrences: - - 0 - - UNBOUNDED - binding_pcm_port_1: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + feature_1c2_catalog_instance_2c202_port: + type: tosca.capabilities.Node occurrences: - - 0 + - 1 - UNBOUNDED - memory.usage_server_pcm: + network.outgoing.packets.rate_1c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_server_pcm: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + endpoint_1c2_catalog_instance: + type: tosca.capabilities.Endpoint.Admin occurrences: - 1 - UNBOUNDED - disk.capacity_server_pcm: + disk.allocation_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - os_server_pcm: - type: tosca.capabilities.OperatingSystem - occurrences: - - 1 - - UNBOUNDED - disk.read.bytes_server_pcm: + disk.latency_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_pcm_port_0: + network.outgoing.bytes.rate_1c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_pcm_port_1: + disk.iops_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_pcm_port_1: - type: tosca.capabilities.Node + binding_1c2_catalog_instance_2c202_port: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - - 1 + - 0 - UNBOUNDED - network.outgoing.bytes_pcm_port_0: + vcpus_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_server_pcm: + disk.device.latency_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_pcm_port_0: - type: tosca.capabilities.Node - occurrences: - - 1 - - UNBOUNDED - network.outgoing.bytes_pcm_port_1: + network.outgoing.bytes_1c2_catalog_instance_1c201_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_pcm_port_0: + attachment_1c2_catalog_instance_1c201_port: type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - attachment_pcm_port_1: - type: tosca.capabilities.Attachment + network.incoming.bytes.rate_1c2_catalog_instance_1c201_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - endpoint_server_pcm: - type: tosca.capabilities.Endpoint.Admin + network.incoming.packets_1c2_catalog_instance_1c201_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_server_pcm: + disk.read.bytes_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - vcpus_server_pcm: + instance_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes_server_pcm: + disk.capacity_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.iops_server_pcm: + disk.write.bytes_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_server_pcm: + disk.device.read.bytes.rate_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.allocation_server_pcm: + network.incoming.bytes_1c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_server_pcm: - type: tosca.capabilities.Scalable + disk.device.allocation_1c2_catalog_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_server_pcm: + disk.device.read.bytes_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_server_pcm: + disk.device.read.requests_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_server_pcm: + disk.device.write.bytes.rate_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_server_pcm: + scalable_1c2_catalog_instance: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_server_pcm: + host_1c2_catalog_instance: type: tosca.capabilities.Container valid_source_types: - tosca.nodes.SoftwareComponent occurrences: - 1 - UNBOUNDED - cpu.delta_server_pcm: + disk.root.size_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_pcm_port_1: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_1c2_catalog_instance_1c201_port: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - network.incoming.packets_pcm_port_0: + network.outpoing.packets_1c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_server_pcm: - type: tosca.capabilities.network.Bindable + network.incoming.packets.rate_1c2_catalog_instance_2c202_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_pcm_port_0: + disk.device.usage_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_server_pcm: + network.outgoing.packets.rate_1c2_catalog_instance_1c201_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_pcm_port_1: + disk.usage_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - instance_server_pcm: + feature_1c2_catalog_instance: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + memory_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests.rate_server_pcm: + network.outgoing.bytes.rate_1c2_catalog_instance_1c201_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.latency_server_pcm: + disk.write.requests.rate_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests_server_pcm: + disk.write.requests_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_server_pcm: - type: tosca.capabilities.Node + binding_1c2_catalog_instance: + type: tosca.capabilities.network.Bindable occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_pcm_port_0: + cpu.delta_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_server_pcm: + network.outgoing.bytes_1c2_catalog_instance_2c202_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_pcm_port_1: + disk.device.read.requests.rate_1c2_catalog_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.1c11_scalling_instance: + org.openecomp.resource.abstract.nodes.pcma_server_1: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: - port_1c1_t1_port_exCP_naming: - type: org.openecomp.datatypes.Naming + port_pcm_port_0_network_role: + type: string required: true status: SUPPORTED - port_1c1_t1_port_fixed_ips: + port_pcm_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_fixed_ips: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.heat.neutron.port.FixedIps - port_1c1_t1_port_vlan_requirements: + port_pcm_port_0_vlan_requirements: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.network.VlanRequirements - port_1c1_t1_port_mac_requirements: - type: org.openecomp.datatypes.network.MacRequirements - required: true - status: SUPPORTED - index_value: - type: integer - description: Index value of this substitution service template runtime instance - required: false - default: 0 - status: SUPPORTED - constraints: - - greater_or_equal: 0 vm_flavor_name: type: string required: true status: SUPPORTED - compute_1c11_scalling_instance_name: + port_pcm_port_0_security_groups: type: list required: true status: SUPPORTED entry_schema: - type: string - compute_1c11_scalling_instance_availability_zone: + type: json + compute_pcma_server_availability_zone: type: list required: true status: SUPPORTED entry_schema: type: string - compute_1c11_scalling_instance_user_data_format: + port_pcm_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network: type: list required: true status: SUPPORTED entry_schema: type: string - port_1c1_t1_port_ip_requirements: + port_pcm_port_0_ip_requirements: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.network.IpRequirements - vm_image_name: - type: string + port_pcm_port_1_security_groups: + type: list required: true status: SUPPORTED - port_1c1_t1_port_name: + entry_schema: + type: json + compute_pcma_server_config_drive: + type: list + required: true + status: SUPPORTED + entry_schema: + type: boolean + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pcma_server_user_data_format: type: list required: true status: SUPPORTED entry_schema: type: string - compute_1c11_scalling_instance_scheduler_hints: + port_pcm_port_0_network: type: list required: true status: SUPPORTED entry_schema: - type: json - port_1c1_t1_port_subnetpoolid: - type: string + type: string + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - port_1c1_t1_port_network_role_tag: - type: string + port_pcm_port_1_vlan_requirements: + type: list required: true status: SUPPORTED - port_1c1_t1_port_network_role: - type: string + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pcm_port_1_fixed_ips: + type: list required: true status: SUPPORTED - port_1c1_t1_port_network: + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + compute_pcma_server_name: type: list required: true status: SUPPORTED entry_schema: type: string - port_1c1_t1_port_order: - type: integer + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - attributes: - 1c11_scalling_instance_instance_name: - type: string + port_pcm_port_1_ip_requirements: + type: list + required: true status: SUPPORTED - 1c11_scalling_instance_1c1_t1_port_tenant_id: - type: string + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_1_order: + type: integer + required: true status: SUPPORTED requirements: - - dependency_1c11_scalling_instance: + - dependency_pcma_server: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_1c11_scalling_instance: + - local_storage_pcma_server: capability: tosca.capabilities.Attachment node: tosca.nodes.BlockStorage relationship: tosca.relationships.AttachesTo occurrences: - 0 - UNBOUNDED - - dependency_1c11_scalling_instance_1c1_t1_port: + - dependency_pcma_server_pcm_port_0: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_1c11_scalling_instance_1c1_t1_port: + - link_pcma_server_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_pcma_server_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcma_server_pcm_port_1: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 capabilities: - disk.device.usage_1c11_scalling_instance: + cpu.delta_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_1c11_scalling_instance_1c1_t1_port: + scalable_pcma_server: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + vcpus_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_1c11_scalling_instance_1c1_t1_port: + host_pcma_server: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_1c11_scalling_instance: + disk.usage_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_1c11_scalling_instance: + attachment_pcma_server_pcm_port_0: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.allocation_1c11_scalling_instance: + disk.iops_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes_1c11_scalling_instance: + network.outgoing.bytes.rate_pcma_server_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_1c11_scalling_instance: - type: tosca.capabilities.network.Bindable + network.outgoing.bytes.rate_pcma_server_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_1c11_scalling_instance: + attachment_pcma_server_pcm_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + endpoint_pcma_server: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + feature_pcma_server: type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - memory.usage_1c11_scalling_instance: + memory.usage_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.usage_1c11_scalling_instance: + network.incoming.packets_pcma_server_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.latency_1c11_scalling_instance: + network.incoming.bytes.rate_pcma_server_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_1c11_scalling_instance_1c1_t1_port: + network.outgoing.bytes_pcma_server_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - vcpus_1c11_scalling_instance: + memory_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_1c11_scalling_instance: + network.outgoing.bytes_pcma_server_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_1c11_scalling_instance: + cpu_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - endpoint_1c11_scalling_instance: - type: tosca.capabilities.Endpoint.Admin + disk.device.write.bytes.rate_pcma_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_1c11_scalling_instance_1c1_t1_port: - type: tosca.capabilities.Node + disk.read.bytes.rate_pcma_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_1c11_scalling_instance: - type: tosca.capabilities.Scalable + network.incoming.packets.rate_pcma_server_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - os_1c11_scalling_instance: + binding_pcma_server_pcm_port_0: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + network.incoming.packets_pcma_server_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_pcma_server: type: tosca.capabilities.OperatingSystem occurrences: - 1 - UNBOUNDED - network.outpoing.packets_1c11_scalling_instance_1c1_t1_port: + binding_pcma_server_pcm_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + network.incoming.packets.rate_pcma_server_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.ephemeral.size_1c11_scalling_instance: + disk.device.read.requests_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_1c11_scalling_instance: + disk.write.bytes.rate_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_1c11_scalling_instance: + network.outgoing.packets.rate_pcma_server_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_1c11_scalling_instance: + disk.device.write.requests.rate_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.capacity_1c11_scalling_instance: + network.incoming.bytes.rate_pcma_server_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_1c11_scalling_instance: - type: tosca.capabilities.Container - valid_source_types: - - tosca.nodes.SoftwareComponent + network.outgoing.packets.rate_pcma_server_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_1c11_scalling_instance: + cpu_util_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu.delta_1c11_scalling_instance: + disk.device.write.bytes_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_1c11_scalling_instance_1c1_t1_port: + disk.device.read.bytes.rate_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests_1c11_scalling_instance: + disk.device.usage_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_1c11_scalling_instance_1c1_t1_port: + disk.read.requests_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_1c11_scalling_instance: + disk.allocation_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_1c11_scalling_instance_1c1_t1_port: + feature_pcma_server_pcm_port_0: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + feature_pcma_server_pcm_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_pcma_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_pcma_server: type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - - 0 + - 1 - UNBOUNDED - disk.write.bytes_1c11_scalling_instance: + disk.latency_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests_1c11_scalling_instance: + disk.device.write.requests_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_1c11_scalling_instance_1c1_t1_port: + disk.device.read.bytes_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_1c11_scalling_instance_1c1_t1_port: + disk.device.allocation_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests_1c11_scalling_instance: + memory.resident_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_1c11_scalling_instance: + disk.root.size_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_1c11_scalling_instance: + disk.write.bytes_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.root.size_1c11_scalling_instance: + network.incoming.bytes_pcma_server_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - instance_1c11_scalling_instance: + disk.write.requests_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_1c11_scalling_instance: + network.incoming.bytes_pcma_server_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.iops_1c11_scalling_instance: + disk.write.requests.rate_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_1c11_scalling_instance: + disk.device.iops_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_1c11_scalling_instance_1c1_t1_port: - type: tosca.capabilities.Attachment + instance_pcma_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_1c11_scalling_instance: + disk.device.latency_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_1c11_scalling_instance: + disk.capacity_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests.rate_1c11_scalling_instance: + disk.device.capacity_pcma_server: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.latency_1c11_scalling_instance: + network.outpoing.packets_pcma_server_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.iops_1c11_scalling_instance: + network.outpoing.packets_pcma_server_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.pcma_server: + org.openecomp.resource.abstract.nodes.a_single_1a: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: - port_pcm_port_3_mac_requirements: - type: org.openecomp.datatypes.network.MacRequirements - required: true - status: SUPPORTED - port_pcm_port_2_network_role: - type: string + compute_a_single_1a_metadata: + type: list required: true status: SUPPORTED - port_pcm_port_2_fixed_ips: + entry_schema: + type: json + port_1a_t1_port_ip_requirements: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.heat.neutron.port.FixedIps - port_pcm_port_3_network_role: + type: org.openecomp.datatypes.network.IpRequirements + port_1a_t2_port_network_role_tag: type: string required: true status: SUPPORTED - port_pcm_port_3_vlan_requirements: - type: list + vm_flavor_name: + type: string required: true status: SUPPORTED - entry_schema: - type: org.openecomp.datatypes.network.VlanRequirements - vm_flavor_name: + port_1a_t2_port_network_role: type: string required: true status: SUPPORTED - port_pcm_port_3_security_groups: + port_1a_t2_port_network: type: list required: true status: SUPPORTED entry_schema: - type: json - port_pcm_port_3_order: - type: integer + type: string + port_1a_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - compute_pcma_server_availability_zone: + port_1a_t1_port_network: type: list required: true status: SUPPORTED entry_schema: type: string - vm_image_name: + port_1a_t1_port_subnetpoolid: type: string required: true status: SUPPORTED - port_pcm_port_2_security_groups: - type: list - required: true - status: SUPPORTED - entry_schema: - type: json - port_pcm_port_2_exCP_naming: - type: org.openecomp.datatypes.Naming + vm_image_name: + type: string required: true status: SUPPORTED - port_pcm_port_3_ip_requirements: + port_1a_t2_port_ip_requirements: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.network.IpRequirements - port_pcm_port_2_subnetpoolid: - type: string - required: true - status: SUPPORTED - port_pcm_port_2_mac_requirements: - type: org.openecomp.datatypes.network.MacRequirements - required: true - status: SUPPORTED - port_pcm_port_2_vlan_requirements: + port_1a_t1_port_vlan_requirements: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.network.VlanRequirements - port_pcm_port_3_subnetpoolid: - type: string - required: true - status: SUPPORTED - port_pcm_port_3_network_role_tag: - type: string + port_1a_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming required: true status: SUPPORTED - compute_pcma_server_config_drive: + compute_a_single_1a_availability_zone: type: list required: true status: SUPPORTED entry_schema: - type: boolean - port_pcm_port_3_fixed_ips: + type: string + compute_a_single_1a_scheduler_hints: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.heat.neutron.port.FixedIps + type: json index_value: type: integer description: Index value of this substitution service template runtime instance @@ -2479,1110 +3197,1220 @@ node_types: status: SUPPORTED constraints: - greater_or_equal: 0 - compute_pcma_server_user_data_format: - type: list + port_1a_t1_port_network_role_tag: + type: string required: true status: SUPPORTED - entry_schema: - type: string - port_pcm_port_2_order: + port_1a_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1a_t1_port_order: type: integer required: true status: SUPPORTED - port_pcm_port_3_exCP_naming: + port_1a_t2_port_exCP_naming: type: org.openecomp.datatypes.Naming required: true status: SUPPORTED - port_pcm_port_2_network: + port_1a_t2_port_vlan_requirements: type: list required: true status: SUPPORTED entry_schema: - type: string - port_pcm_port_2_ip_requirements: - type: list + type: org.openecomp.datatypes.network.VlanRequirements + port_1a_t2_port_subnetpoolid: + type: string required: true status: SUPPORTED - entry_schema: - type: org.openecomp.datatypes.network.IpRequirements - port_pcm_port_2_network_role_tag: - type: string + port_1a_t2_port_order: + type: integer required: true status: SUPPORTED - port_pcm_port_3_network: + compute_a_single_1a_user_data_format: type: list required: true status: SUPPORTED entry_schema: type: string - compute_pcma_server_scheduler_hints: + compute_a_single_1a_name: type: list required: true status: SUPPORTED entry_schema: - type: json - compute_pcma_server_name: - type: list + type: string + port_1a_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - entry_schema: - type: string + attributes: + a_single_1a_instance_name: + type: string + status: SUPPORTED + a_single_1a_1a_t1_port_tenant_id: + type: string + status: SUPPORTED requirements: - - dependency_pcma_server: + - dependency_a_single_1a_1a_t1_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_pcma_server: + - link_a_single_1a_1a_t1_port: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_a_single_1a: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_a_single_1a: capability: tosca.capabilities.Attachment node: tosca.nodes.BlockStorage relationship: tosca.relationships.AttachesTo occurrences: - 0 - UNBOUNDED - - dependency_pcma_server_pcm_port_3: + - dependency_a_single_1a_1a_t2_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_pcma_server_pcm_port_3: + - link_a_single_1a_1a_t2_port: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 - - dependency_pcma_server_pcm_port_2: - capability: tosca.capabilities.Node - node: tosca.nodes.Root - relationship: tosca.relationships.DependsOn + capabilities: + disk.read.bytes_a_single_1a: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - - 0 + - 1 - UNBOUNDED - - link_pcma_server_pcm_port_2: - capability: tosca.capabilities.network.Linkable - relationship: tosca.relationships.network.LinksTo + network.incoming.bytes.rate_a_single_1a_1a_t2_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - 1 - capabilities: - cpu.delta_pcma_server: + - UNBOUNDED + disk.usage_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_pcma_server: + attachment_a_single_1a_1a_t2_port: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + scalable_a_single_1a: type: tosca.capabilities.Scalable occurrences: - 1 - UNBOUNDED - vcpus_pcma_server: + network.outgoing.bytes.rate_a_single_1a_1a_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_pcma_server: + host_a_single_1a: type: tosca.capabilities.Container valid_source_types: - tosca.nodes.SoftwareComponent occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_pcma_server: + endpoint_a_single_1a: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.root.size_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.usage_pcma_server: + memory.resident_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_pcma_server_pcm_port_3: + network.incoming.packets.rate_a_single_1a_1a_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes_pcma_server: + cpu.delta_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.iops_pcma_server: + disk.device.write.requests_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_pcma_server_pcm_port_2: + network.incoming.bytes.rate_a_single_1a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_pcma_server_pcm_port_2: - type: tosca.capabilities.Attachment + disk.iops_a_single_1a: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - endpoint_pcma_server: - type: tosca.capabilities.Endpoint.Admin + network.incoming.bytes_a_single_1a_1a_t1_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_pcma_server: - type: tosca.capabilities.Node + cpu_util_a_single_1a: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_pcma_server_pcm_port_3: - type: tosca.capabilities.Attachment + os_a_single_1a: + type: tosca.capabilities.OperatingSystem occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_pcma_server_pcm_port_2: + disk.device.usage_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.usage_pcma_server: + network.incoming.packets.rate_a_single_1a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_pcma_server_pcm_port_3: + network.outgoing.packets.rate_a_single_1a_1a_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_pcma_server_pcm_port_3: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface - occurrences: - - 0 - - UNBOUNDED - network.incoming.bytes.rate_pcma_server_pcm_port_3: + disk.read.requests_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_pcma_server: + disk.read.bytes.rate_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_pcma_server_pcm_port_2: + disk.write.bytes.rate_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_pcma_server: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + attachment_a_single_1a_1a_t1_port: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_pcma_server: + cpu_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_pcma_server: + memory.usage_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_pcma_server_pcm_port_3: + disk.device.write.requests.rate_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_pcma_server_pcm_port_2: + binding_a_single_1a_1a_t2_port: type: tosca.capabilities.network.Bindable valid_source_types: - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - 0 - UNBOUNDED - os_pcma_server: - type: tosca.capabilities.OperatingSystem - occurrences: - - 1 - - UNBOUNDED - network.incoming.packets_pcma_server_pcm_port_2: + network.incoming.packets_a_single_1a_1a_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_pcma_server_pcm_port_3: + disk.device.read.requests_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_pcma_server_pcm_port_3: + disk.device.latency_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_pcma_server_pcm_port_2: + instance_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests_pcma_server: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + binding_a_single_1a: + type: tosca.capabilities.network.Bindable occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_pcma_server: + disk.latency_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_pcma_server_pcm_port_2: + network.outgoing.bytes_a_single_1a_1a_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests.rate_pcma_server: + disk.device.allocation_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_pcma_server: + disk.write.bytes_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_pcma_server: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_a_single_1a_1a_t1_port: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_pcma_server: + network.outpoing.packets_a_single_1a_1a_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_pcma_server: + network.outpoing.packets_a_single_1a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_pcma_server: + disk.device.read.bytes.rate_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_pcma_server: + disk.device.write.bytes_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_pcma_server_pcm_port_2: - type: tosca.capabilities.Node - occurrences: - - 1 - - UNBOUNDED - feature_pcma_server_pcm_port_3: - type: tosca.capabilities.Node - occurrences: - - 1 - - UNBOUNDED - disk.ephemeral.size_pcma_server: + disk.device.write.bytes.rate_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_pcma_server: - type: tosca.capabilities.network.Bindable - occurrences: - - 1 - - UNBOUNDED - disk.latency_pcma_server: + memory_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests_pcma_server: + disk.allocation_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_pcma_server: + network.outgoing.packets.rate_a_single_1a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.allocation_pcma_server: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_a_single_1a_1a_t2_port: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - memory.resident_pcma_server: + disk.capacity_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.root.size_pcma_server: + disk.device.read.bytes_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes_pcma_server: + network.incoming.packets_a_single_1a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests_pcma_server: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_a_single_1a: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - network.incoming.bytes_pcma_server_pcm_port_2: + network.outgoing.bytes_a_single_1a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_pcma_server_pcm_port_3: + disk.ephemeral.size_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_pcma_server: + vcpus_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.iops_pcma_server: + binding_a_single_1a_1a_t1_port: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.device.iops_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - instance_pcma_server: + disk.write.requests_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_pcma_server_pcm_port_3: + disk.device.read.requests.rate_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.latency_pcma_server: + disk.device.capacity_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_pcma_server_pcm_port_2: + disk.write.requests.rate_a_single_1a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.capacity_pcma_server: + network.incoming.bytes_a_single_1a_1a_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_pcma_server: + network.outgoing.bytes.rate_a_single_1a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.heat.pcm_server: - derived_from: org.openecomp.resource.abstract.nodes.VFC + org.openecomp.resource.vfc.nodes.heat.b_single_1b: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server properties: - port_pcm_port_0_network_role: - type: string + port_1b_t1_port_order: + type: integer required: true status: SUPPORTED - port_pcm_port_1_network_role_tag: + port_1b_t1_port_network_role: type: string required: true status: SUPPORTED - availabilityzone_name: + port_1b_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: type: string - description: availabilityzone name required: true status: SUPPORTED - port_pcm_port_0_vlan_requirements: + port_1b_t1_port_ip_requirements: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.network.VlanRequirements - pcm_image_name: + type: org.openecomp.datatypes.network.IpRequirements + vm_image_name: type: string - description: PCRF CM image name required: true status: SUPPORTED - port_pcm_port_0_order: + port_1b_t2_port_network_role: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_order: type: integer required: true status: SUPPORTED - port_pcm_port_0_subnetpoolid: + compute_b_single_1b_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1b_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1b_t2_port_network_role_tag: type: string required: true status: SUPPORTED - port_pcm_port_1_subnetpoolid: + port_1b_t2_port_subnetpoolid: type: string required: true status: SUPPORTED - port_pcm_port_0_network_role_tag: + port_1b_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + compute_b_single_1b_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_b_single_1b_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1b_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1b_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1b_t1_port_network_role_tag: type: string required: true status: SUPPORTED - pcm_server_name: + compute_b_single_1b_metadata: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1b_t1_port_subnetpoolid: type: string - description: PCRF CM server name required: true status: SUPPORTED - cps_net_mask: + port_1b_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1b_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1b_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_b_single_1b_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + b_single_1b_instance_name: type: string - description: CPS network mask + status: SUPPORTED + b_single_1b_1b_t1_port_tenant_id: + type: string + status: SUPPORTED + org.openecomp.resource.abstract.nodes.b_single_1b_1: + derived_from: org.openecomp.resource.abstract.nodes.VFC + properties: + port_1b_t1_port_order: + type: integer required: true status: SUPPORTED - port_pcm_port_1_exCP_naming: - type: org.openecomp.datatypes.Naming + port_1b_t1_port_network_role: + type: string required: true status: SUPPORTED - port_pcm_port_0_exCP_naming: + port_1b_t1_port_exCP_naming: type: org.openecomp.datatypes.Naming required: true status: SUPPORTED - oam_net_name: + vm_flavor_name: type: string - description: OAM network name required: true status: SUPPORTED - port_pcm_port_1_network_role: + port_1b_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + vm_image_name: type: string required: true status: SUPPORTED - server_group: + port_1b_t2_port_network_role: type: string required: true status: SUPPORTED - connectivityChk: - type: json + port_1b_t2_port_order: + type: integer required: true status: SUPPORTED - port_pcm_port_0_ip_requirements: + compute_b_single_1b_user_data_format: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.network.IpRequirements - oam_net_gw: - type: string - description: CPS network gateway + type: string + port_1b_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming required: true status: SUPPORTED - security_group_name: + port_1b_t2_port_network_role_tag: type: string - description: the name of security group required: true status: SUPPORTED - cps_net_ip: + port_1b_t2_port_subnetpoolid: type: string - description: CPS network ip required: true status: SUPPORTED - port_pcm_port_1_mac_requirements: + port_1b_t2_port_mac_requirements: type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - port_pcm_port_1_vlan_requirements: + compute_b_single_1b_availability_zone: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.network.VlanRequirements - pcm_flavor_name: - type: string - description: flavor name of PCRF CM instance + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_b_single_1b_scheduler_hints: + type: list required: true status: SUPPORTED - pcm_vol: - type: string - description: CPS Cluman Cinder Volume + entry_schema: + type: json + port_1b_t2_port_vlan_requirements: + type: list required: true status: SUPPORTED - port_pcm_port_1_ip_requirements: + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1b_t2_port_ip_requirements: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.network.IpRequirements - port_pcm_port_0_mac_requirements: - type: org.openecomp.datatypes.network.MacRequirements + port_1b_t1_port_network_role_tag: + type: string required: true status: SUPPORTED - cps_net_name: - type: string - description: CPS network name + compute_b_single_1b_metadata: + type: list required: true status: SUPPORTED - oam_net_ip: + entry_schema: + type: json + port_1b_t1_port_subnetpoolid: type: string - description: OAM network ip required: true status: SUPPORTED - oam_net_mask: - type: string - description: CPS network mask + port_1b_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - port_pcm_port_1_order: - type: integer + port_1b_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1b_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_b_single_1b_name: + type: list required: true status: SUPPORTED + entry_schema: + type: string attributes: - server_pcm_id: + b_single_1b_instance_name: + type: string + status: SUPPORTED + b_single_1b_1b_t1_port_tenant_id: type: string - description: the pcm nova service id status: SUPPORTED requirements: - - dependency_pcm_port_1: + - dependency_b_single_1b: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_pcm_port_1: - capability: tosca.capabilities.network.Linkable - relationship: tosca.relationships.network.LinksTo + - local_storage_b_single_1b: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo occurrences: - - 1 - - 1 - - dependency_server_pcm: + - 0 + - UNBOUNDED + - dependency_b_single_1b_1b_t1_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_server_pcm: - capability: tosca.capabilities.Attachment - node: tosca.nodes.BlockStorage - relationship: tosca.relationships.AttachesTo + - link_b_single_1b_1b_t1_port: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo occurrences: - - 0 - - UNBOUNDED - - dependency_pcm_port_0: + - 1 + - 1 + - dependency_b_single_1b_1b_t2_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_pcm_port_0: + - link_b_single_1b_1b_t2_port: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 capabilities: - network.incoming.packets.rate_pcm_port_0: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + attachment_b_single_1b_1b_t2_port: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - cpu_server_pcm: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + endpoint_b_single_1b: + type: tosca.capabilities.Endpoint.Admin occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_pcm_port_1: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_b_single_1b: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - network.outpoing.packets_pcm_port_1: + disk.iops_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_server_pcm: + network.incoming.bytes.rate_b_single_1b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests_server_pcm: + network.outgoing.bytes.rate_b_single_1b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_pcm_port_0: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + scalable_b_single_1b: + type: tosca.capabilities.Scalable occurrences: - 1 - UNBOUNDED - disk.device.iops_server_pcm: + disk.write.bytes_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_server_pcm: + os_b_single_1b: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + vcpus_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests_server_pcm: + cpu_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_server_pcm: + disk.device.read.requests.rate_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_server_pcm: + network.incoming.packets.rate_b_single_1b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.usage_server_pcm: + instance_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_server_pcm: + network.incoming.bytes.rate_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.root.size_server_pcm: + disk.read.bytes_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.ephemeral.size_server_pcm: + disk.device.latency_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.latency_server_pcm: + disk.usage_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_pcm_port_0: + network.incoming.bytes_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_pcm_port_1: + disk.device.allocation_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_pcm_port_0: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + network.outgoing.packets.rate_b_single_1b_1b_t2_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - - 0 + - 1 - UNBOUNDED - binding_pcm_port_1: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + disk.device.capacity_b_single_1b: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - - 0 + - 1 - UNBOUNDED - memory.usage_server_pcm: + disk.latency_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_server_pcm: + network.incoming.packets_b_single_1b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.capacity_server_pcm: + network.incoming.packets.rate_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - os_server_pcm: - type: tosca.capabilities.OperatingSystem + attachment_b_single_1b_1b_t1_port: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - disk.read.bytes_server_pcm: + disk.device.write.requests_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_pcm_port_0: + binding_b_single_1b_1b_t2_port: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.ephemeral.size_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_pcm_port_1: + disk.write.requests.rate_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_pcm_port_1: - type: tosca.capabilities.Node + network.outpoing.packets_b_single_1b_1b_t2_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_pcm_port_0: + disk.device.iops_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_server_pcm: + disk.read.requests_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_pcm_port_0: - type: tosca.capabilities.Node + memory.resident_b_single_1b: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_pcm_port_1: + disk.root.size_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_pcm_port_0: - type: tosca.capabilities.Attachment + feature_b_single_1b_1b_t1_port: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - attachment_pcm_port_1: - type: tosca.capabilities.Attachment + network.outgoing.bytes_b_single_1b_1b_t2_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - endpoint_server_pcm: - type: tosca.capabilities.Endpoint.Admin + disk.capacity_b_single_1b: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_server_pcm: + disk.device.write.bytes_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - vcpus_server_pcm: + disk.device.read.bytes_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes_server_pcm: + disk.device.read.bytes.rate_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.iops_server_pcm: + cpu_util_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_server_pcm: + disk.write.requests_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.allocation_server_pcm: + network.outgoing.packets.rate_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_server_pcm: - type: tosca.capabilities.Scalable + disk.device.usage_b_single_1b: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_server_pcm: + disk.read.bytes.rate_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_server_pcm: + network.outgoing.bytes_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_server_pcm: + disk.device.read.requests_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_server_pcm: + network.incoming.packets_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_server_pcm: - type: tosca.capabilities.Container + binding_b_single_1b_1b_t1_port: + type: tosca.capabilities.network.Bindable valid_source_types: - - tosca.nodes.SoftwareComponent + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - - 1 + - 0 - UNBOUNDED - cpu.delta_server_pcm: + network.outpoing.packets_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_pcm_port_1: + disk.device.write.requests.rate_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_pcm_port_0: + memory.usage_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_server_pcm: - type: tosca.capabilities.network.Bindable - occurrences: - - 1 - - UNBOUNDED - network.outgoing.bytes.rate_pcm_port_0: + disk.write.bytes.rate_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_server_pcm: + network.incoming.bytes_b_single_1b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_pcm_port_1: + network.outgoing.bytes.rate_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - instance_server_pcm: + cpu.delta_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests.rate_server_pcm: + disk.allocation_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.latency_server_pcm: + disk.device.write.bytes.rate_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests_server_pcm: + memory_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_server_pcm: - type: tosca.capabilities.Node - occurrences: - - 1 - - UNBOUNDED - network.incoming.bytes.rate_pcm_port_0: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + host_b_single_1b: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_server_pcm: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + binding_b_single_1b: + type: tosca.capabilities.network.Bindable occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_pcm_port_1: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_b_single_1b_1b_t2_port: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.2c2_catalog_instance: + org.openecomp.resource.abstract.nodes.b_single_2b: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: - compute_2c2_catalog_instance_user_data_format: - type: list + port_1b_t1_port_order: + type: integer required: true status: SUPPORTED - entry_schema: - type: string - port_1c201_port_vlan_requirements: - type: list + port_1b_t1_port_network_role: + type: string required: true status: SUPPORTED - entry_schema: - type: org.openecomp.datatypes.network.VlanRequirements - vm_flavor_name: - type: string + port_1b_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming required: true status: SUPPORTED - port_2c202_port_subnetpoolid: + vm_flavor_name: type: string required: true status: SUPPORTED - port_2c202_port_ip_requirements: + port_1b_t1_port_ip_requirements: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.network.IpRequirements - port_1c201_port_exCP_naming: - type: org.openecomp.datatypes.Naming - required: true - status: SUPPORTED - port_2c202_port_network_role_tag: + vm_image_name: type: string required: true status: SUPPORTED - port_2c202_port_network_role: - type: string + compute_b_single_2b_scheduler_hints: + type: list required: true status: SUPPORTED - vm_image_name: + entry_schema: + type: json + port_1b_t2_port_network_role: type: string required: true status: SUPPORTED - port_2c202_port_order: + port_1b_t2_port_order: type: integer required: true status: SUPPORTED - port_1c201_port_network_role_tag: + port_1b_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1b_t2_port_network_role_tag: type: string required: true status: SUPPORTED - compute_2c2_catalog_instance_scheduler_hints: - type: list + port_1b_t2_port_subnetpoolid: + type: string required: true status: SUPPORTED - entry_schema: - type: json - compute_2c2_catalog_instance_availability_zone: + compute_b_single_2b_availability_zone: type: list required: true status: SUPPORTED entry_schema: type: string - port_1c201_port_order: - type: integer - required: true - status: SUPPORTED - port_2c202_port_vlan_requirements: - type: list + port_1b_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - entry_schema: - type: org.openecomp.datatypes.network.VlanRequirements index_value: type: integer description: Index value of this substitution service template runtime instance @@ -3591,470 +4419,617 @@ node_types: status: SUPPORTED constraints: - greater_or_equal: 0 - compute_2c2_catalog_instance_name: + port_1b_t2_port_vlan_requirements: type: list required: true status: SUPPORTED entry_schema: - type: string - port_2c202_port_mac_requirements: - type: org.openecomp.datatypes.network.MacRequirements + type: org.openecomp.datatypes.network.VlanRequirements + port_1b_t2_port_ip_requirements: + type: list required: true status: SUPPORTED - port_2c202_port_network: + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + compute_b_single_2b_name: type: list required: true status: SUPPORTED entry_schema: type: string - port_1c201_port_ip_requirements: + port_1b_t1_port_value_specs: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.network.IpRequirements - port_1c201_port_mac_requirements: - type: org.openecomp.datatypes.network.MacRequirements + type: json + compute_b_single_2b_user_data_format: + type: list required: true status: SUPPORTED - port_2c202_port_exCP_naming: - type: org.openecomp.datatypes.Naming + entry_schema: + type: string + port_1b_t1_port_network_role_tag: + type: string required: true status: SUPPORTED - port_1c201_port_subnetpoolid: + port_1b_t1_port_subnetpoolid: type: string required: true status: SUPPORTED - port_1c201_port_network_role: - type: string + port_1b_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - port_1c201_port_network: + port_1b_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1b_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1b_t1_port_network: type: list required: true status: SUPPORTED entry_schema: type: string attributes: - 2c2_catalog_instance_instance_name: + b_single_2b_instance_name: type: string status: SUPPORTED requirements: - - dependency_2c2_catalog_instance: + - dependency_b_single_2b: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_2c2_catalog_instance: + - local_storage_b_single_2b: capability: tosca.capabilities.Attachment node: tosca.nodes.BlockStorage relationship: tosca.relationships.AttachesTo occurrences: - 0 - UNBOUNDED - - dependency_2c2_catalog_instance_2c202_port: + - dependency_b_single_2b_1b_t1_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_2c2_catalog_instance_2c202_port: + - link_b_single_2b_1b_t1_port: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 - - dependency_2c2_catalog_instance_1c201_port: + - dependency_b_single_2b_1b_t2_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_2c2_catalog_instance_1c201_port: + - link_b_single_2b_1b_t2_port: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 capabilities: - network.outgoing.packets.rate_2c2_catalog_instance_1c201_port: + disk.usage_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - instance_2c2_catalog_instance: + network.incoming.bytes.rate_b_single_2b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes_2c2_catalog_instance: + network.outgoing.bytes.rate_b_single_2b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.capacity_2c2_catalog_instance: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + attachment_b_single_2b_1b_t2_port: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_2c2_catalog_instance: + disk.write.bytes.rate_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes_2c2_catalog_instance: + disk.device.capacity_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_2c2_catalog_instance: + cpu.delta_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_2c2_catalog_instance: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + host_b_single_2b: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent occurrences: - 1 - UNBOUNDED - disk.device.allocation_2c2_catalog_instance: + disk.device.write.requests_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_2c2_catalog_instance: - type: tosca.capabilities.Scalable - occurrences: - - 1 - - UNBOUNDED - disk.device.read.requests_2c2_catalog_instance: + network.incoming.packets.rate_b_single_2b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_2c2_catalog_instance_1c201_port: + disk.read.bytes_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.root.size_2c2_catalog_instance: + disk.device.iops_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests_2c2_catalog_instance: + disk.ephemeral.size_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_2c2_catalog_instance: - type: tosca.capabilities.Container - valid_source_types: - - tosca.nodes.SoftwareComponent + network.incoming.bytes.rate_b_single_2b_1b_t1_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_2c2_catalog_instance: + network.incoming.bytes_b_single_2b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_2c2_catalog_instance_1c201_port: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface - occurrences: - - 0 - - UNBOUNDED - disk.device.write.requests.rate_2c2_catalog_instance: + disk.write.requests.rate_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - os_2c2_catalog_instance: - type: tosca.capabilities.OperatingSystem + feature_b_single_2b: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - network.outpoing.packets_2c2_catalog_instance_2c202_port: + memory.resident_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_2c2_catalog_instance: + disk.write.requests_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_2c2_catalog_instance_1c201_port: + network.outgoing.packets.rate_b_single_2b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_2c2_catalog_instance_1c201_port: + disk.capacity_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.latency_2c2_catalog_instance: + disk.device.read.bytes_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.iops_2c2_catalog_instance: + network.incoming.packets.rate_b_single_2b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - endpoint_2c2_catalog_instance: - type: tosca.capabilities.Endpoint.Admin + attachment_b_single_2b_1b_t1_port: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - vcpus_2c2_catalog_instance: + disk.write.bytes_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_2c2_catalog_instance_2c202_port: + network.incoming.packets_b_single_2b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_2c2_catalog_instance_1c201_port: - type: tosca.capabilities.Node - occurrences: - - 1 - - UNBOUNDED - network.incoming.bytes.rate_2c2_catalog_instance_2c202_port: + vcpus_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.iops_2c2_catalog_instance: + disk.device.read.requests.rate_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_2c2_catalog_instance_1c201_port: - type: tosca.capabilities.Attachment + binding_b_single_2b_1b_t2_port: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - - 1 + - 0 - UNBOUNDED - network.incoming.packets_2c2_catalog_instance_1c201_port: + instance_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.latency_2c2_catalog_instance: + network.outpoing.packets_b_single_2b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_2c2_catalog_instance_2c202_port: + disk.device.read.requests_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_2c2_catalog_instance: + disk.device.latency_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.usage_2c2_catalog_instance: + network.outgoing.bytes_b_single_2b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_2c2_catalog_instance: + disk.device.allocation_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_2c2_catalog_instance: + disk.latency_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_2c2_catalog_instance: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_b_single_2b_1b_t1_port: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_2c2_catalog_instance_2c202_port: + disk.device.read.bytes.rate_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_2c2_catalog_instance: + network.outpoing.packets_b_single_2b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.ephemeral.size_2c2_catalog_instance: + disk.device.write.bytes.rate_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_2c2_catalog_instance: + disk.allocation_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_2c2_catalog_instance: + memory_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_2c2_catalog_instance: + network.outgoing.packets.rate_b_single_2b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_2c2_catalog_instance_2c202_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + binding_b_single_2b: + type: tosca.capabilities.network.Bindable occurrences: - 1 - UNBOUNDED - network.outpoing.packets_2c2_catalog_instance_1c201_port: + network.incoming.packets_b_single_2b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_2c2_catalog_instance: + network.outgoing.bytes_b_single_2b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_2c2_catalog_instance_1c201_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + binding_b_single_2b_1b_t1_port: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + feature_b_single_2b_1b_t2_port: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - disk.usage_2c2_catalog_instance: + os_b_single_2b: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.root.size_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_2c2_catalog_instance_2c202_port: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + disk.read.requests_b_single_2b: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - - 0 + - 1 - UNBOUNDED - feature_2c2_catalog_instance: - type: tosca.capabilities.Node + endpoint_b_single_2b: + type: tosca.capabilities.Endpoint.Admin occurrences: - 1 - UNBOUNDED - disk.write.requests_2c2_catalog_instance: + disk.iops_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu.delta_2c2_catalog_instance: + disk.device.write.bytes_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_2c2_catalog_instance_2c202_port: + scalable_b_single_2b: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + memory.usage_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_2c2_catalog_instance: - type: tosca.capabilities.network.Bindable + cpu_util_b_single_2b: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_2c2_catalog_instance_2c202_port: - type: tosca.capabilities.Attachment + disk.device.usage_b_single_2b: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_2c2_catalog_instance_2c202_port: + disk.device.write.requests.rate_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_2c2_catalog_instance_2c202_port: - type: tosca.capabilities.Node + cpu_b_single_2b: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_2c2_catalog_instance: + disk.read.bytes.rate_b_single_2b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_2c2_catalog_instance_1c201_port: + network.incoming.bytes_b_single_2b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_2c2_catalog_instance: + network.outgoing.bytes.rate_b_single_2b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.1c2_catalog_instance: - derived_from: org.openecomp.resource.abstract.nodes.VFC + org.openecomp.resource.vfc.nodes.heat.2c2_catalog_instance: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_2c2_catalog_instance_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c201_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_2c202_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_2c202_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1c201_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_2c202_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_2c202_port_network_role: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_2c202_port_order: + type: integer + required: true + status: SUPPORTED + port_1c201_port_network_role_tag: + type: string + required: true + status: SUPPORTED + compute_2c2_catalog_instance_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_2c2_catalog_instance_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c201_port_order: + type: integer + required: true + status: SUPPORTED + port_2c202_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_2c2_catalog_instance_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_2c202_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_2c202_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1c201_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1c201_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_2c202_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1c201_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c201_port_network_role: + type: string + required: true + status: SUPPORTED + port_1c201_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + 2c2_catalog_instance_instance_name: + type: string + status: SUPPORTED + org.openecomp.resource.vfc.nodes.heat.1c2_catalog_instance: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server properties: compute_1c2_catalog_instance_availability_zone: type: list @@ -4193,431 +5168,957 @@ node_types: 1c2_catalog_instance_1c201_port_tenant_id: type: string status: SUPPORTED + org.openecomp.resource.abstract.nodes.heat.nested-no_vfc_v0.1: + derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute + properties: + server_group: + type: string + required: true + status: SUPPORTED + connectivityChk: + type: json + required: true + status: SUPPORTED + availabilityzone_name: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + oam_net_gw: + type: string + description: CPS network gateway + required: true + status: SUPPORTED + pcm_image_name: + type: string + description: PCRF CM image name + required: true + status: SUPPORTED + security_group_name: + type: string + description: the name of security group + required: true + status: SUPPORTED + cps_net_ip: + type: string + description: CPS network ip + required: true + status: SUPPORTED + pcm_flavor_name: + type: string + description: flavor name of PCRF CM instance + required: true + status: SUPPORTED + pcm_vol: + type: string + description: CPS Cluman Cinder Volume + required: true + status: SUPPORTED + pcm_server_name: + type: string + description: PCRF CM server name + required: true + status: SUPPORTED + cps_net_name: + type: string + description: CPS network name + required: true + status: SUPPORTED + cps_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + oam_net_ip: + type: string + description: OAM network ip + required: true + status: SUPPORTED + oam_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + pcma_flavor_name: + type: string + required: true + status: SUPPORTED + oam_net_name: + type: string + description: OAM network name + required: true + status: SUPPORTED + pcma_server_name: + type: string + required: true + status: SUPPORTED + pcma_image_name: + type: string + required: true + status: SUPPORTED + attributes: + portId: + type: string + status: SUPPORTED requirements: - - dependency_1c2_catalog_instance: + - dependency_pcm_port_2: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_1c2_catalog_instance: - capability: tosca.capabilities.Attachment - node: tosca.nodes.BlockStorage - relationship: tosca.relationships.AttachesTo + - link_pcm_port_2: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - dependency_1c2_catalog_instance_1c201_port: + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_pcm_port_3: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_1c2_catalog_instance_1c201_port: + - link_pcm_port_3: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 - - dependency_1c2_catalog_instance_2c202_port: + - dependency_server_pcma2: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_1c2_catalog_instance_2c202_port: + - local_storage_server_pcma2: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_server_pcma1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_pcma1: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_0: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 capabilities: - disk.device.capacity_1c2_catalog_instance: + network.incoming.packets.rate_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_1c2_catalog_instance_2c202_port: - type: tosca.capabilities.Attachment + network.incoming.packets.rate_pcm_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_1c2_catalog_instance_2c202_port: + network.incoming.packets.rate_pcm_port_2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_1c2_catalog_instance_2c202_port: + network.incoming.packets.rate_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_1c2_catalog_instance_1c201_port: + network.outpoing.packets_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_1c2_catalog_instance: + disk.device.iops_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_1c2_catalog_instance_1c201_port: + network.outpoing.packets_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.usage_1c2_catalog_instance: + network.outpoing.packets_pcm_port_3: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_1c2_catalog_instance_1c201_port: + network.outpoing.packets_pcm_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_pcm_port_3: type: tosca.capabilities.network.Bindable valid_source_types: - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - 0 - UNBOUNDED - disk.write.bytes.rate_1c2_catalog_instance: + disk.device.latency_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_1c2_catalog_instance: + disk.device.usage_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_1c2_catalog_instance: + network.incoming.bytes_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_1c2_catalog_instance: + disk.device.latency_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_1c2_catalog_instance_1c201_port: + network.incoming.bytes_pcm_port_2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.ephemeral.size_1c2_catalog_instance: + network.incoming.bytes_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_1c2_catalog_instance: + disk.device.usage_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_1c2_catalog_instance: + binding_pcm_port_0: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_pcm_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_pcm_port_2: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + network.incoming.bytes_pcm_port_3: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests.rate_1c2_catalog_instance: + network.outgoing.packets.rate_pcm_port_3: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - os_1c2_catalog_instance: - type: tosca.capabilities.OperatingSystem + disk.device.read.requests_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.iops_1c2_catalog_instance: + disk.device.read.requests_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_1c2_catalog_instance_2c202_port: - type: tosca.capabilities.Node + network.outgoing.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_1c2_catalog_instance_2c202_port: + network.outgoing.packets.rate_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - endpoint_1c2_catalog_instance: - type: tosca.capabilities.Endpoint.Admin + disk.write.bytes_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_1c2_catalog_instance: + disk.device.read.requests.rate_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.latency_1c2_catalog_instance: + network.outgoing.packets.rate_pcm_port_2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_1c2_catalog_instance_2c202_port: + disk.device.read.requests.rate_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.iops_1c2_catalog_instance: + disk.write.bytes_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_1c2_catalog_instance_2c202_port: + feature_pcm_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + binding_server_pcma1: type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - - 0 + - 1 - UNBOUNDED - vcpus_1c2_catalog_instance: + network.outgoing.bytes_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.latency_1c2_catalog_instance: + binding_server_pcma2: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_0: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_1c2_catalog_instance_1c201_port: + feature_pcm_port_3: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_2: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_1c2_catalog_instance_1c201_port: + attachment_pcm_port_0: type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_1c2_catalog_instance_1c201_port: + attachment_pcm_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_1c2_catalog_instance_1c201_port: + attachment_pcm_port_2: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes_1c2_catalog_instance: + attachment_pcm_port_3: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - instance_1c2_catalog_instance: + disk.root.size_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.capacity_1c2_catalog_instance: + disk.iops_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes_1c2_catalog_instance: + disk.iops_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_1c2_catalog_instance: + disk.device.write.bytes.rate_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_1c2_catalog_instance_2c202_port: + disk.device.write.bytes.rate_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.allocation_1c2_catalog_instance: + disk.read.bytes_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_1c2_catalog_instance: + disk.read.bytes_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests_1c2_catalog_instance: + cpu_util_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_1c2_catalog_instance: + cpu_util_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_1c2_catalog_instance: - type: tosca.capabilities.Scalable + feature_server_pcma2: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - disk.device.write.requests_1c2_catalog_instance: + memory.usage_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_1c2_catalog_instance: + memory.usage_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_pcma1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_server_pcma2: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_server_pcma1: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_pcma2: type: tosca.capabilities.Container valid_source_types: - tosca.nodes.SoftwareComponent occurrences: - 1 - UNBOUNDED - disk.root.size_1c2_catalog_instance: + host_server_pcma1: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_1c2_catalog_instance_1c201_port: - type: tosca.capabilities.Node + disk.ephemeral.size_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_1c2_catalog_instance_2c202_port: + disk.device.write.requests.rate_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_1c2_catalog_instance_2c202_port: + disk.latency_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_1c2_catalog_instance: + disk.latency_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_1c2_catalog_instance_1c201_port: + disk.device.write.requests.rate_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.usage_1c2_catalog_instance: + scalable_server_pcma2: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + scalable_server_pcma1: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_1c2_catalog_instance: - type: tosca.capabilities.Node + disk.device.write.requests_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_1c2_catalog_instance: + instance_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_1c2_catalog_instance_1c201_port: + disk.device.allocation_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_1c2_catalog_instance: + disk.device.allocation_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests_1c2_catalog_instance: + instance_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_1c2_catalog_instance: - type: tosca.capabilities.network.Bindable + os_server_pcma1: + type: tosca.capabilities.OperatingSystem occurrences: - 1 - UNBOUNDED - cpu.delta_1c2_catalog_instance: + os_server_pcma2: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_1c2_catalog_instance_2c202_port: + disk.capacity_server_pcma2: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_1c2_catalog_instance: + disk.write.requests_server_pcma1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.a_single_2a: + disk.write.requests_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_pcma1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_pcma2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.abstract.nodes.1c12_scalling_instance: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: - compute_a_single_2a_user_data_format: + port_1c1_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + compute_1c12_scalling_instance_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1c1_t1_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + compute_1c12_scalling_instance_name: type: list required: true status: SUPPORTED entry_schema: type: string - port_1a_t1_port_exCP_naming: - type: org.openecomp.datatypes.Naming + port_1c1_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1c1_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED index_value: @@ -4628,418 +6129,405 @@ node_types: status: SUPPORTED constraints: - greater_or_equal: 0 - port_1a_t1_port_ip_requirements: - type: list - required: true - status: SUPPORTED - entry_schema: - type: org.openecomp.datatypes.network.IpRequirements - port_1a_t1_port_network_role_tag: - type: string - required: true - status: SUPPORTED - port_1a_t1_port_network_role: + vm_flavor_name: type: string required: true status: SUPPORTED - compute_a_single_2a_scheduler_hints: + compute_1c12_scalling_instance_user_data_format: type: list required: true status: SUPPORTED entry_schema: - type: json - port_1a_t1_port_order: - type: integer - required: true - status: SUPPORTED - compute_a_single_2a_availability_zone: + type: string + port_1c1_t1_port_ip_requirements: type: list required: true status: SUPPORTED entry_schema: - type: string - vm_flavor_name: + type: org.openecomp.datatypes.network.IpRequirements + vm_image_name: type: string required: true status: SUPPORTED - port_1a_t1_port_mac_requirements: - type: org.openecomp.datatypes.network.MacRequirements - required: true - status: SUPPORTED - port_1a_t1_port_network: + port_1c1_t1_port_name: type: list required: true status: SUPPORTED entry_schema: type: string - port_1a_t1_port_subnetpoolid: + port_1c1_t1_port_subnetpoolid: type: string required: true status: SUPPORTED - compute_a_single_2a_name: - type: list + port_1c1_t1_port_network_role_tag: + type: string required: true status: SUPPORTED - entry_schema: - type: string - vm_image_name: + port_1c1_t1_port_network_role: type: string required: true status: SUPPORTED - port_1a_t1_port_vlan_requirements: + compute_1c12_scalling_instance_availability_zone: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.network.VlanRequirements - compute_a_single_2a_metadata: + type: string + port_1c1_t1_port_network: type: list required: true status: SUPPORTED entry_schema: - type: json + type: string + port_1c1_t1_port_order: + type: integer + required: true + status: SUPPORTED attributes: - a_single_2a_instance_name: + 1c12_scalling_instance_1c1_t1_port_tenant_id: + type: string + status: SUPPORTED + 1c12_scalling_instance_instance_name: type: string status: SUPPORTED requirements: - - dependency_a_single_2a: + - dependency_1c12_scalling_instance_1c1_t1_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_a_single_2a: - capability: tosca.capabilities.Attachment - node: tosca.nodes.BlockStorage - relationship: tosca.relationships.AttachesTo + - link_1c12_scalling_instance_1c1_t1_port: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo occurrences: - - 0 - - UNBOUNDED - - dependency_a_single_2a_1a_t1_port: + - 1 + - 1 + - dependency_1c12_scalling_instance: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_a_single_2a_1a_t1_port: - capability: tosca.capabilities.network.Linkable - relationship: tosca.relationships.network.LinksTo + - local_storage_1c12_scalling_instance: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo occurrences: - - 1 - - 1 + - 0 + - UNBOUNDED capabilities: - disk.capacity_a_single_2a: + cpu_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.ephemeral.size_a_single_2a: + disk.device.write.bytes_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_a_single_2a: + network.incoming.bytes.rate_1c12_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_a_single_2a: + disk.usage_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests_a_single_2a: + disk.device.read.requests_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_a_single_2a: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_1c12_scalling_instance_1c1_t1_port: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - disk.device.iops_a_single_2a: + disk.device.latency_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_a_single_2a: + network.outgoing.bytes_1c12_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_a_single_2a: + cpu_util_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests.rate_a_single_2a: + disk.read.bytes_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_a_single_2a_1a_t1_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + binding_1c12_scalling_instance: + type: tosca.capabilities.network.Bindable occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_a_single_2a: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + endpoint_1c12_scalling_instance: + type: tosca.capabilities.Endpoint.Admin occurrences: - 1 - UNBOUNDED - disk.device.latency_a_single_2a: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + scalable_1c12_scalling_instance: + type: tosca.capabilities.Scalable occurrences: - 1 - UNBOUNDED - disk.read.bytes_a_single_2a: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + os_1c12_scalling_instance: + type: tosca.capabilities.OperatingSystem occurrences: - 1 - UNBOUNDED - disk.device.read.requests_a_single_2a: + disk.device.usage_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.allocation_a_single_2a: + disk.device.allocation_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.latency_a_single_2a: + binding_1c12_scalling_instance_1c1_t1_port: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + network.incoming.packets_1c12_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_a_single_2a_1a_t1_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + attachment_1c12_scalling_instance_1c1_t1_port: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - disk.usage_a_single_2a: + disk.latency_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_a_single_2a_1a_t1_port: + network.incoming.bytes_1c12_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_a_single_2a: - type: tosca.capabilities.Scalable + memory_1c12_scalling_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_a_single_2a_1a_t1_port: - type: tosca.capabilities.Node + host_1c12_scalling_instance: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_a_single_2a: + cpu.delta_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_a_single_2a: + disk.device.capacity_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - endpoint_a_single_2a: - type: tosca.capabilities.Endpoint.Admin + disk.read.requests_1c12_scalling_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.root.size_a_single_2a: + disk.write.requests.rate_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests_a_single_2a: + disk.write.bytes.rate_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_a_single_2a_1a_t1_port: - type: tosca.capabilities.Attachment + disk.write.requests_1c12_scalling_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.iops_a_single_2a: + network.outgoing.bytes.rate_1c12_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - vcpus_a_single_2a: + disk.ephemeral.size_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - os_a_single_2a: - type: tosca.capabilities.OperatingSystem + disk.device.read.requests.rate_1c12_scalling_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_a_single_2a: + instance_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_a_single_2a: + disk.device.read.bytes.rate_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_a_single_2a: + disk.iops_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_a_single_2a: + disk.device.iops_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.usage_a_single_2a: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_1c12_scalling_instance: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_a_single_2a_1a_t1_port: + disk.device.write.bytes.rate_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_a_single_2a_1a_t1_port: + disk.write.bytes_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_a_single_2a: - type: tosca.capabilities.network.Bindable + disk.device.read.bytes_1c12_scalling_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - instance_a_single_2a: + vcpus_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_a_single_2a_1a_t1_port: + network.incoming.packets.rate_1c12_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes_a_single_2a: + disk.device.write.requests.rate_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_a_single_2a_1a_t1_port: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface - occurrences: - - 0 - - UNBOUNDED - network.incoming.packets_a_single_2a_1a_t1_port: + network.outgoing.packets.rate_1c12_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_a_single_2a: - type: tosca.capabilities.Container - valid_source_types: - - tosca.nodes.SoftwareComponent + disk.device.write.requests_1c12_scalling_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_a_single_2a: + network.outpoing.packets_1c12_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_a_single_2a: + disk.allocation_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_a_single_2a: + disk.root.size_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_a_single_2a: + disk.capacity_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_a_single_2a_1a_t1_port: + memory.resident_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu.delta_a_single_2a: + disk.read.bytes.rate_1c12_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_a_single_2a: - type: tosca.capabilities.Node + memory.usage_1c12_scalling_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.pcma_server_1: - derived_from: org.openecomp.resource.abstract.nodes.VFC + org.openecomp.resource.vfc.nodes.heat.pcma_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server properties: port_pcm_port_0_network_role: type: string @@ -5189,485 +6677,652 @@ node_types: type: integer required: true status: SUPPORTED + org.openecomp.resource.vfc.nodes.heat.pcm_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pcm_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + availabilityzone_name: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + port_pcm_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_image_name: + type: string + description: PCRF CM image name + required: true + status: SUPPORTED + port_pcm_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + pcm_server_name: + type: string + description: PCRF CM server name + required: true + status: SUPPORTED + cps_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + oam_net_name: + type: string + description: OAM network name + required: true + status: SUPPORTED + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + server_group: + type: string + required: true + status: SUPPORTED + connectivityChk: + type: json + required: true + status: SUPPORTED + port_pcm_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + oam_net_gw: + type: string + description: CPS network gateway + required: true + status: SUPPORTED + security_group_name: + type: string + description: the name of security group + required: true + status: SUPPORTED + cps_net_ip: + type: string + description: CPS network ip + required: true + status: SUPPORTED + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_flavor_name: + type: string + description: flavor name of PCRF CM instance + required: true + status: SUPPORTED + pcm_vol: + type: string + description: CPS Cluman Cinder Volume + required: true + status: SUPPORTED + port_pcm_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + cps_net_name: + type: string + description: CPS network name + required: true + status: SUPPORTED + oam_net_ip: + type: string + description: OAM network ip + required: true + status: SUPPORTED + oam_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_order: + type: integer + required: true + status: SUPPORTED + attributes: + server_pcm_id: + type: string + description: the pcm nova service id + status: SUPPORTED requirements: - - dependency_pcma_server: + - dependency_pcm_port_1: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_pcma_server: - capability: tosca.capabilities.Attachment - node: tosca.nodes.BlockStorage - relationship: tosca.relationships.AttachesTo + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo occurrences: - - 0 - - UNBOUNDED - - dependency_pcma_server_pcm_port_0: + - 1 + - 1 + - dependency_server_pcm: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_pcma_server_pcm_port_0: - capability: tosca.capabilities.network.Linkable - relationship: tosca.relationships.network.LinksTo + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo occurrences: - - 1 - - 1 - - dependency_pcma_server_pcm_port_1: + - 0 + - UNBOUNDED + - dependency_pcm_port_0: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_pcma_server_pcm_port_1: + - link_pcm_port_0: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 capabilities: - cpu.delta_pcma_server: + network.incoming.packets.rate_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_pcma_server: - type: tosca.capabilities.Scalable - occurrences: - - 1 - - UNBOUNDED - vcpus_pcma_server: + cpu_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_pcma_server: - type: tosca.capabilities.Container - valid_source_types: - - tosca.nodes.SoftwareComponent - occurrences: - - 1 - - UNBOUNDED - disk.device.read.requests.rate_pcma_server: + network.incoming.packets.rate_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.usage_pcma_server: + network.outpoing.packets_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_pcma_server_pcm_port_0: - type: tosca.capabilities.Attachment - occurrences: - - 1 - - UNBOUNDED - disk.read.bytes_pcma_server: + memory_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.iops_pcma_server: + disk.write.requests_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_pcma_server_pcm_port_0: + network.outpoing.packets_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_pcma_server_pcm_port_1: + disk.device.iops_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_pcma_server_pcm_port_1: - type: tosca.capabilities.Attachment - occurrences: - - 1 - - UNBOUNDED - endpoint_pcma_server: - type: tosca.capabilities.Endpoint.Admin - occurrences: - - 1 - - UNBOUNDED - feature_pcma_server: - type: tosca.capabilities.Node + memory.resident_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.usage_pcma_server: + disk.device.write.requests_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_pcma_server_pcm_port_0: + disk.device.usage_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_pcma_server_pcm_port_1: + disk.allocation_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_pcma_server_pcm_port_0: + disk.usage_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_pcma_server: + disk.device.write.bytes_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_pcma_server_pcm_port_1: + disk.root.size_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_pcma_server: + disk.ephemeral.size_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_pcma_server: + disk.device.latency_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_pcma_server: + network.incoming.bytes_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_pcma_server_pcm_port_0: + network.incoming.bytes_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_pcma_server_pcm_port_0: + binding_pcm_port_0: type: tosca.capabilities.network.Bindable valid_source_types: - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - 0 - UNBOUNDED - network.incoming.packets_pcma_server_pcm_port_1: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. - occurrences: - - 1 - - UNBOUNDED - os_pcma_server: - type: tosca.capabilities.OperatingSystem - occurrences: - - 1 - - UNBOUNDED - binding_pcma_server_pcm_port_1: + binding_pcm_port_1: type: tosca.capabilities.network.Bindable valid_source_types: - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - 0 - UNBOUNDED - network.incoming.packets.rate_pcma_server_pcm_port_1: + memory.usage_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests_pcma_server: + disk.read.requests_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_pcma_server: + disk.capacity_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_pcma_server_pcm_port_1: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + os_server_pcm: + type: tosca.capabilities.OperatingSystem occurrences: - 1 - UNBOUNDED - disk.device.write.requests.rate_pcma_server: + disk.read.bytes_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_pcma_server_pcm_port_0: + network.outgoing.packets.rate_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_pcma_server_pcm_port_0: + network.outgoing.packets.rate_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_pcma_server: + feature_pcm_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_pcma_server: + disk.device.read.bytes_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_pcma_server: + feature_pcm_port_0: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_pcma_server: + attachment_pcm_port_0: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + endpoint_server_pcm: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_pcma_server: + vcpus_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_pcma_server: + disk.write.bytes_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_pcma_server_pcm_port_0: - type: tosca.capabilities.Node + disk.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_pcma_server_pcm_port_1: - type: tosca.capabilities.Node + disk.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.ephemeral.size_pcma_server: + disk.device.allocation_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_pcma_server: - type: tosca.capabilities.network.Bindable + scalable_server_pcm: + type: tosca.capabilities.Scalable occurrences: - 1 - UNBOUNDED - disk.latency_pcma_server: + disk.device.read.bytes.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests_pcma_server: + cpu_util_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_pcma_server: + disk.write.requests.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.allocation_pcma_server: + disk.device.write.bytes.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_pcma_server: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + host_server_pcm: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent occurrences: - 1 - UNBOUNDED - disk.root.size_pcma_server: + cpu.delta_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes_pcma_server: + network.outgoing.bytes.rate_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_pcma_server_pcm_port_0: + network.incoming.packets_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests_pcma_server: + binding_server_pcm: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_pcma_server_pcm_port_1: + disk.device.capacity_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_pcma_server: + network.incoming.packets_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.iops_pcma_server: + instance_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - instance_pcma_server: + disk.device.write.requests.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.latency_pcma_server: + disk.latency_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.capacity_pcma_server: + disk.device.read.requests_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_pcma_server: + feature_server_pcm: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_pcma_server_pcm_port_1: + disk.write.bytes.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_pcma_server_pcm_port_0: + network.incoming.bytes.rate_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.b_single_1b: - derived_from: org.openecomp.resource.abstract.nodes.VFC + org.openecomp.resource.vfc.nodes.heat.a_single_1a: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server properties: - port_1b_t1_port_order: - type: integer + compute_a_single_1a_metadata: + type: list required: true status: SUPPORTED - port_1b_t1_port_network_role: - type: string + entry_schema: + type: json + port_1a_t1_port_ip_requirements: + type: list required: true status: SUPPORTED - port_1b_t1_port_exCP_naming: - type: org.openecomp.datatypes.Naming + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1a_t2_port_network_role_tag: + type: string required: true status: SUPPORTED vm_flavor_name: type: string required: true status: SUPPORTED - port_1b_t1_port_ip_requirements: - type: list - required: true - status: SUPPORTED - entry_schema: - type: org.openecomp.datatypes.network.IpRequirements - vm_image_name: + port_1a_t2_port_network_role: type: string required: true status: SUPPORTED - port_1b_t2_port_network_role: - type: string + port_1a_t2_port_network: + type: list required: true status: SUPPORTED - port_1b_t2_port_order: - type: integer + entry_schema: + type: string + port_1a_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - compute_b_single_1b_user_data_format: + port_1a_t1_port_network: type: list required: true status: SUPPORTED entry_schema: type: string - port_1b_t2_port_exCP_naming: - type: org.openecomp.datatypes.Naming + port_1a_t1_port_subnetpoolid: + type: string required: true status: SUPPORTED - port_1b_t2_port_network_role_tag: + vm_image_name: type: string required: true status: SUPPORTED - port_1b_t2_port_subnetpoolid: - type: string + port_1a_t2_port_ip_requirements: + type: list required: true status: SUPPORTED - port_1b_t2_port_mac_requirements: - type: org.openecomp.datatypes.network.MacRequirements + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_1a_t1_port_vlan_requirements: + type: list required: true status: SUPPORTED - compute_b_single_1b_availability_zone: + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1a_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + compute_a_single_1a_availability_zone: type: list required: true status: SUPPORTED entry_schema: type: string + compute_a_single_1a_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json index_value: type: integer description: Index value of this substitution service template runtime instance @@ -5676,1590 +7331,1498 @@ node_types: status: SUPPORTED constraints: - greater_or_equal: 0 - compute_b_single_1b_scheduler_hints: - type: list + port_1a_t1_port_network_role_tag: + type: string required: true status: SUPPORTED - entry_schema: - type: json - port_1b_t2_port_vlan_requirements: + port_1a_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1a_t1_port_order: + type: integer + required: true + status: SUPPORTED + port_1a_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1a_t2_port_vlan_requirements: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.network.VlanRequirements - port_1b_t2_port_ip_requirements: + port_1a_t2_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1a_t2_port_order: + type: integer + required: true + status: SUPPORTED + compute_a_single_1a_user_data_format: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.network.IpRequirements - port_1b_t1_port_value_specs: + type: string + compute_a_single_1a_name: type: list required: true status: SUPPORTED entry_schema: - type: json - port_1b_t1_port_network_role_tag: - type: string + type: string + port_1a_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - port_1b_t1_port_subnetpoolid: + attributes: + a_single_1a_instance_name: type: string + status: SUPPORTED + a_single_1a_1a_t1_port_tenant_id: + type: string + status: SUPPORTED + org.openecomp.resource.abstract.nodes.1c11_scalling_instance: + derived_from: org.openecomp.resource.abstract.nodes.VFC + properties: + port_1c1_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming required: true status: SUPPORTED - port_1b_t1_port_mac_requirements: + port_1c1_t1_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_1c1_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1c1_t1_port_mac_requirements: type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - port_1b_t2_port_network: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + vm_flavor_name: + type: string + required: true + status: SUPPORTED + compute_1c11_scalling_instance_name: type: list required: true status: SUPPORTED entry_schema: type: string - port_1b_t1_port_vlan_requirements: + compute_1c11_scalling_instance_availability_zone: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.network.VlanRequirements - port_1b_t1_port_network: + type: string + compute_1c11_scalling_instance_user_data_format: type: list required: true status: SUPPORTED entry_schema: type: string - compute_b_single_1b_name: + port_1c1_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_1c11_scalling_instance_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1c1_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1c1_t1_port_network: type: list required: true status: SUPPORTED entry_schema: type: string + port_1c1_t1_port_order: + type: integer + required: true + status: SUPPORTED attributes: - b_single_1b_instance_name: + 1c11_scalling_instance_instance_name: type: string status: SUPPORTED - b_single_1b_1b_t1_port_tenant_id: + 1c11_scalling_instance_1c1_t1_port_tenant_id: type: string status: SUPPORTED requirements: - - dependency_b_single_1b: + - dependency_1c11_scalling_instance: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_b_single_1b: + - local_storage_1c11_scalling_instance: capability: tosca.capabilities.Attachment node: tosca.nodes.BlockStorage relationship: tosca.relationships.AttachesTo occurrences: - 0 - UNBOUNDED - - dependency_b_single_1b_1b_t1_port: - capability: tosca.capabilities.Node - node: tosca.nodes.Root - relationship: tosca.relationships.DependsOn - occurrences: - - 0 - - UNBOUNDED - - link_b_single_1b_1b_t1_port: - capability: tosca.capabilities.network.Linkable - relationship: tosca.relationships.network.LinksTo - occurrences: - - 1 - - 1 - - dependency_b_single_1b_1b_t2_port: + - dependency_1c11_scalling_instance_1c1_t1_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_b_single_1b_1b_t2_port: + - link_1c11_scalling_instance_1c1_t1_port: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 capabilities: - attachment_b_single_1b_1b_t2_port: - type: tosca.capabilities.Attachment - occurrences: - - 1 - - UNBOUNDED - endpoint_b_single_1b: - type: tosca.capabilities.Endpoint.Admin - occurrences: - - 1 - - UNBOUNDED - feature_b_single_1b: - type: tosca.capabilities.Node - occurrences: - - 1 - - UNBOUNDED - disk.iops_b_single_1b: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. - occurrences: - - 1 - - UNBOUNDED - network.incoming.bytes.rate_b_single_1b_1b_t2_port: + disk.device.usage_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_b_single_1b_1b_t2_port: + network.incoming.packets_1c11_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_b_single_1b: - type: tosca.capabilities.Scalable - occurrences: - - 1 - - UNBOUNDED - disk.write.bytes_b_single_1b: + network.incoming.packets.rate_1c11_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - os_b_single_1b: - type: tosca.capabilities.OperatingSystem - occurrences: - - 1 - - UNBOUNDED - vcpus_b_single_1b: + disk.allocation_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_b_single_1b: + disk.device.read.bytes_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_b_single_1b: + disk.device.allocation_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_b_single_1b_1b_t2_port: + disk.read.bytes_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - instance_b_single_1b: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + binding_1c11_scalling_instance: + type: tosca.capabilities.network.Bindable occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_b_single_1b_1b_t1_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_1c11_scalling_instance: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - disk.read.bytes_b_single_1b: + memory.usage_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.latency_b_single_1b: + disk.usage_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.usage_b_single_1b: + disk.latency_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_b_single_1b_1b_t1_port: + network.outgoing.packets.rate_1c11_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.allocation_b_single_1b: + vcpus_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_b_single_1b_1b_t2_port: + memory_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_b_single_1b: + cpu_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.latency_b_single_1b: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + endpoint_1c11_scalling_instance: + type: tosca.capabilities.Endpoint.Admin occurrences: - 1 - UNBOUNDED - network.incoming.packets_b_single_1b_1b_t2_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_1c11_scalling_instance_1c1_t1_port: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_b_single_1b_1b_t1_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + scalable_1c11_scalling_instance: + type: tosca.capabilities.Scalable occurrences: - 1 - UNBOUNDED - attachment_b_single_1b_1b_t1_port: - type: tosca.capabilities.Attachment + os_1c11_scalling_instance: + type: tosca.capabilities.OperatingSystem occurrences: - 1 - UNBOUNDED - disk.device.write.requests_b_single_1b: + network.outpoing.packets_1c11_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_b_single_1b_1b_t2_port: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface - occurrences: - - 0 - - UNBOUNDED - disk.ephemeral.size_b_single_1b: + disk.ephemeral.size_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_b_single_1b: + cpu_util_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_b_single_1b_1b_t2_port: + disk.write.bytes.rate_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.iops_b_single_1b: + disk.read.bytes.rate_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_b_single_1b: + disk.capacity_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_b_single_1b: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + host_1c11_scalling_instance: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent occurrences: - 1 - UNBOUNDED - disk.root.size_b_single_1b: + disk.device.write.bytes.rate_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_b_single_1b_1b_t1_port: - type: tosca.capabilities.Node - occurrences: - - 1 - - UNBOUNDED - network.outgoing.bytes_b_single_1b_1b_t2_port: + cpu.delta_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.capacity_b_single_1b: + network.outgoing.bytes_1c11_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_b_single_1b: + disk.device.write.requests_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_b_single_1b: + network.incoming.bytes.rate_1c11_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_b_single_1b: + disk.device.capacity_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_b_single_1b: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + binding_1c11_scalling_instance_1c1_t1_port: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - - 1 + - 0 - UNBOUNDED - disk.write.requests_b_single_1b: + disk.write.bytes_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_b_single_1b_1b_t1_port: + disk.write.requests_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_b_single_1b: + network.incoming.bytes_1c11_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_b_single_1b: + network.outgoing.bytes.rate_1c11_scalling_instance_1c1_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_b_single_1b_1b_t1_port: + disk.device.read.requests_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests_b_single_1b: + disk.device.write.bytes_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_b_single_1b_1b_t1_port: + disk.device.read.bytes.rate_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_b_single_1b_1b_t1_port: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface - occurrences: - - 0 - - UNBOUNDED - network.outpoing.packets_b_single_1b_1b_t1_port: + disk.root.size_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests.rate_b_single_1b: + instance_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.usage_b_single_1b: + disk.read.requests_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_b_single_1b: + disk.device.iops_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_b_single_1b_1b_t2_port: + memory.resident_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_b_single_1b_1b_t1_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + attachment_1c11_scalling_instance_1c1_t1_port: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - cpu.delta_b_single_1b: + disk.write.requests.rate_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_b_single_1b: + disk.device.read.requests.rate_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_b_single_1b: + disk.device.write.requests.rate_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_b_single_1b: + disk.device.latency_1c11_scalling_instance: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_b_single_1b: - type: tosca.capabilities.Container - valid_source_types: - - tosca.nodes.SoftwareComponent - occurrences: - - 1 - - UNBOUNDED - binding_b_single_1b: - type: tosca.capabilities.network.Bindable - occurrences: - - 1 - - UNBOUNDED - feature_b_single_1b_1b_t2_port: - type: tosca.capabilities.Node + disk.iops_1c11_scalling_instance: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.a_single_1a: + org.openecomp.resource.abstract.nodes.heat.pcm_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: - compute_a_single_1a_metadata: - type: list + port_pcm_port_0_network_role: + type: string required: true status: SUPPORTED - entry_schema: - type: json - port_1a_t1_port_ip_requirements: - type: list + port_pcm_port_1_network_role_tag: + type: string required: true status: SUPPORTED - entry_schema: - type: org.openecomp.datatypes.network.IpRequirements - port_1a_t2_port_network_role_tag: + availabilityzone_name: type: string + description: availabilityzone name required: true status: SUPPORTED - vm_flavor_name: - type: string + port_pcm_port_0_vlan_requirements: + type: list required: true status: SUPPORTED - port_1a_t2_port_network_role: + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_image_name: type: string + description: PCRF CM image name required: true status: SUPPORTED - port_1a_t2_port_network: - type: list + port_pcm_port_0_order: + type: integer required: true status: SUPPORTED - entry_schema: - type: string - port_1a_t1_port_mac_requirements: - type: org.openecomp.datatypes.network.MacRequirements + port_pcm_port_0_subnetpoolid: + type: string required: true status: SUPPORTED - port_1a_t1_port_network: - type: list + port_pcm_port_1_subnetpoolid: + type: string required: true status: SUPPORTED - entry_schema: - type: string - port_1a_t1_port_subnetpoolid: + port_pcm_port_0_network_role_tag: type: string required: true status: SUPPORTED - vm_image_name: + pcm_server_name: type: string + description: PCRF CM server name required: true status: SUPPORTED - port_1a_t2_port_ip_requirements: - type: list + cps_net_mask: + type: string + description: CPS network mask required: true status: SUPPORTED - entry_schema: - type: org.openecomp.datatypes.network.IpRequirements - port_1a_t1_port_vlan_requirements: - type: list + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming required: true status: SUPPORTED - entry_schema: - type: org.openecomp.datatypes.network.VlanRequirements - port_1a_t1_port_exCP_naming: + port_pcm_port_0_exCP_naming: type: org.openecomp.datatypes.Naming required: true status: SUPPORTED - compute_a_single_1a_availability_zone: - type: list + oam_net_name: + type: string + description: OAM network name required: true status: SUPPORTED - entry_schema: - type: string - compute_a_single_1a_scheduler_hints: + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + server_group: + type: string + required: true + status: SUPPORTED + connectivityChk: + type: json + required: true + status: SUPPORTED + port_pcm_port_0_ip_requirements: type: list required: true status: SUPPORTED entry_schema: - type: json - index_value: - type: integer - description: Index value of this substitution service template runtime instance - required: false - default: 0 - status: SUPPORTED - constraints: - - greater_or_equal: 0 - port_1a_t1_port_network_role_tag: + type: org.openecomp.datatypes.network.IpRequirements + oam_net_gw: type: string + description: CPS network gateway required: true status: SUPPORTED - port_1a_t1_port_network_role: + security_group_name: type: string + description: the name of security group required: true status: SUPPORTED - port_1a_t1_port_order: - type: integer + cps_net_ip: + type: string + description: CPS network ip required: true status: SUPPORTED - port_1a_t2_port_exCP_naming: - type: org.openecomp.datatypes.Naming + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - port_1a_t2_port_vlan_requirements: + port_pcm_port_1_vlan_requirements: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.network.VlanRequirements - port_1a_t2_port_subnetpoolid: + pcm_flavor_name: type: string + description: flavor name of PCRF CM instance required: true status: SUPPORTED - port_1a_t2_port_order: - type: integer + pcm_vol: + type: string + description: CPS Cluman Cinder Volume required: true status: SUPPORTED - compute_a_single_1a_user_data_format: + port_pcm_port_1_ip_requirements: type: list required: true status: SUPPORTED entry_schema: - type: string - compute_a_single_1a_name: - type: list + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - entry_schema: - type: string - port_1a_t2_port_mac_requirements: - type: org.openecomp.datatypes.network.MacRequirements + cps_net_name: + type: string + description: CPS network name required: true status: SUPPORTED - attributes: - a_single_1a_instance_name: + oam_net_ip: type: string + description: OAM network ip + required: true status: SUPPORTED - a_single_1a_1a_t1_port_tenant_id: + oam_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_order: + type: integer + required: true + status: SUPPORTED + attributes: + server_pcm_id: type: string + description: the pcm nova service id status: SUPPORTED requirements: - - dependency_a_single_1a_1a_t1_port: + - dependency_pcm_port_1: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_a_single_1a_1a_t1_port: + - link_pcm_port_1: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 - - dependency_a_single_1a: + - dependency_server_pcm: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_a_single_1a: + - local_storage_server_pcm: capability: tosca.capabilities.Attachment node: tosca.nodes.BlockStorage relationship: tosca.relationships.AttachesTo occurrences: - 0 - UNBOUNDED - - dependency_a_single_1a_1a_t2_port: + - dependency_pcm_port_0: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_a_single_1a_1a_t2_port: + - link_pcm_port_0: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 capabilities: - disk.read.bytes_a_single_1a: + network.incoming.packets.rate_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_a_single_1a_1a_t2_port: + cpu_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.usage_a_single_1a: + network.incoming.packets.rate_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_a_single_1a_1a_t2_port: - type: tosca.capabilities.Attachment - occurrences: - - 1 - - UNBOUNDED - scalable_a_single_1a: - type: tosca.capabilities.Scalable - occurrences: - - 1 - - UNBOUNDED - network.outgoing.bytes.rate_a_single_1a_1a_t2_port: + network.outpoing.packets_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_a_single_1a: - type: tosca.capabilities.Container - valid_source_types: - - tosca.nodes.SoftwareComponent + memory_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - endpoint_a_single_1a: - type: tosca.capabilities.Endpoint.Admin + disk.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.root.size_a_single_1a: + network.outpoing.packets_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_a_single_1a: + disk.device.iops_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_a_single_1a_1a_t2_port: + memory.resident_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu.delta_a_single_1a: + disk.device.write.requests_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests_a_single_1a: + disk.device.usage_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_a_single_1a_1a_t1_port: + disk.allocation_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.iops_a_single_1a: + disk.usage_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_a_single_1a_1a_t1_port: + disk.device.write.bytes_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_a_single_1a: + disk.root.size_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - os_a_single_1a: - type: tosca.capabilities.OperatingSystem + disk.ephemeral.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_a_single_1a: + disk.device.latency_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_a_single_1a_1a_t1_port: + network.incoming.bytes_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_a_single_1a_1a_t2_port: + network.incoming.bytes_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_a_single_1a: + binding_pcm_port_0: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_pcm_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + memory.usage_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_a_single_1a: + disk.read.requests_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_a_single_1a: + disk.capacity_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_a_single_1a_1a_t1_port: - type: tosca.capabilities.Attachment + os_server_pcm: + type: tosca.capabilities.OperatingSystem occurrences: - 1 - UNBOUNDED - cpu_a_single_1a: + disk.read.bytes_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.usage_a_single_1a: + network.outgoing.packets.rate_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests.rate_a_single_1a: + network.outgoing.packets.rate_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_a_single_1a_1a_t2_port: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + feature_pcm_port_1: + type: tosca.capabilities.Node occurrences: - - 0 + - 1 - UNBOUNDED - network.incoming.packets_a_single_1a_1a_t2_port: + network.outgoing.bytes_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests_a_single_1a: + disk.device.read.bytes_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.latency_a_single_1a: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_pcm_port_0: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - instance_a_single_1a: + network.outgoing.bytes_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_a_single_1a: - type: tosca.capabilities.network.Bindable + attachment_pcm_port_0: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - disk.latency_a_single_1a: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + attachment_pcm_port_1: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_a_single_1a_1a_t2_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + endpoint_server_pcm: + type: tosca.capabilities.Endpoint.Admin occurrences: - 1 - UNBOUNDED - disk.device.allocation_a_single_1a: + disk.device.read.requests.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes_a_single_1a: + vcpus_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_a_single_1a_1a_t1_port: - type: tosca.capabilities.Node + disk.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_a_single_1a_1a_t2_port: + disk.iops_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_a_single_1a_1a_t1_port: + disk.read.bytes.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_a_single_1a: + disk.device.allocation_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_a_single_1a: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + scalable_server_pcm: + type: tosca.capabilities.Scalable occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_a_single_1a: + disk.device.read.bytes.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_a_single_1a: + cpu_util_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_a_single_1a: + disk.write.requests.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_a_single_1a_1a_t1_port: + disk.device.write.bytes.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_a_single_1a_1a_t2_port: - type: tosca.capabilities.Node + host_server_pcm: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent occurrences: - 1 - UNBOUNDED - disk.capacity_a_single_1a: + cpu.delta_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_a_single_1a: + network.outgoing.bytes.rate_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_a_single_1a_1a_t1_port: + network.incoming.packets_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_a_single_1a: - type: tosca.capabilities.Node + binding_server_pcm: + type: tosca.capabilities.network.Bindable occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_a_single_1a_1a_t1_port: + network.outgoing.bytes.rate_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.ephemeral.size_a_single_1a: + disk.device.capacity_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - vcpus_a_single_1a: + network.incoming.packets_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_a_single_1a_1a_t1_port: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface - occurrences: - - 0 - - UNBOUNDED - disk.device.iops_a_single_1a: + instance_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests_a_single_1a: + disk.device.write.requests.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_a_single_1a: + disk.latency_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_a_single_1a: + disk.device.read.requests_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_a_single_1a: + feature_server_pcm: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_0: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_a_single_1a_1a_t2_port: + disk.write.bytes.rate_server_pcm: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_a_single_1a_1a_t1_port: + network.incoming.bytes.rate_pcm_port_1: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.b_single_1b_1: + org.openecomp.resource.abstract.nodes.a_single_2a: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: - port_1b_t1_port_order: - type: integer - required: true - status: SUPPORTED - port_1b_t1_port_network_role: - type: string + compute_a_single_2a_user_data_format: + type: list required: true status: SUPPORTED - port_1b_t1_port_exCP_naming: + entry_schema: + type: string + port_1a_t1_port_exCP_naming: type: org.openecomp.datatypes.Naming required: true status: SUPPORTED - vm_flavor_name: - type: string - required: true + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 status: SUPPORTED - port_1b_t1_port_ip_requirements: + constraints: + - greater_or_equal: 0 + port_1a_t1_port_ip_requirements: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.network.IpRequirements - vm_image_name: + port_1a_t1_port_network_role_tag: type: string required: true status: SUPPORTED - port_1b_t2_port_network_role: + port_1a_t1_port_network_role: type: string required: true status: SUPPORTED - port_1b_t2_port_order: - type: integer - required: true - status: SUPPORTED - compute_b_single_1b_user_data_format: + compute_a_single_2a_scheduler_hints: type: list required: true status: SUPPORTED entry_schema: - type: string - port_1b_t2_port_exCP_naming: - type: org.openecomp.datatypes.Naming - required: true - status: SUPPORTED - port_1b_t2_port_network_role_tag: - type: string - required: true - status: SUPPORTED - port_1b_t2_port_subnetpoolid: - type: string - required: true - status: SUPPORTED - port_1b_t2_port_mac_requirements: - type: org.openecomp.datatypes.network.MacRequirements + type: json + port_1a_t1_port_order: + type: integer required: true status: SUPPORTED - compute_b_single_1b_availability_zone: + compute_a_single_2a_availability_zone: type: list required: true status: SUPPORTED entry_schema: type: string - index_value: - type: integer - description: Index value of this substitution service template runtime instance - required: false - default: 0 - status: SUPPORTED - constraints: - - greater_or_equal: 0 - compute_b_single_1b_scheduler_hints: - type: list + vm_flavor_name: + type: string required: true status: SUPPORTED - entry_schema: - type: json - port_1b_t2_port_vlan_requirements: - type: list + port_1a_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements required: true status: SUPPORTED - entry_schema: - type: org.openecomp.datatypes.network.VlanRequirements - port_1b_t2_port_ip_requirements: + port_1a_t1_port_network: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.network.IpRequirements - port_1b_t1_port_network_role_tag: + type: string + port_1a_t1_port_subnetpoolid: type: string required: true status: SUPPORTED - compute_b_single_1b_metadata: + compute_a_single_2a_name: type: list required: true status: SUPPORTED entry_schema: - type: json - port_1b_t1_port_subnetpoolid: + type: string + vm_image_name: type: string required: true status: SUPPORTED - port_1b_t1_port_mac_requirements: - type: org.openecomp.datatypes.network.MacRequirements - required: true - status: SUPPORTED - port_1b_t2_port_network: - type: list - required: true - status: SUPPORTED - entry_schema: - type: string - port_1b_t1_port_vlan_requirements: + port_1a_t1_port_vlan_requirements: type: list required: true status: SUPPORTED entry_schema: type: org.openecomp.datatypes.network.VlanRequirements - compute_b_single_1b_name: + compute_a_single_2a_metadata: type: list required: true status: SUPPORTED entry_schema: - type: string + type: json attributes: - b_single_1b_instance_name: - type: string - status: SUPPORTED - b_single_1b_1b_t1_port_tenant_id: + a_single_2a_instance_name: type: string status: SUPPORTED requirements: - - dependency_b_single_1b: + - dependency_a_single_2a: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_b_single_1b: + - local_storage_a_single_2a: capability: tosca.capabilities.Attachment node: tosca.nodes.BlockStorage relationship: tosca.relationships.AttachesTo occurrences: - 0 - UNBOUNDED - - dependency_b_single_1b_1b_t1_port: - capability: tosca.capabilities.Node - node: tosca.nodes.Root - relationship: tosca.relationships.DependsOn - occurrences: - - 0 - - UNBOUNDED - - link_b_single_1b_1b_t1_port: - capability: tosca.capabilities.network.Linkable - relationship: tosca.relationships.network.LinksTo - occurrences: - - 1 - - 1 - - dependency_b_single_1b_1b_t2_port: + - dependency_a_single_2a_1a_t1_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_b_single_1b_1b_t2_port: + - link_a_single_2a_1a_t1_port: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 capabilities: - attachment_b_single_1b_1b_t2_port: - type: tosca.capabilities.Attachment - occurrences: - - 1 - - UNBOUNDED - endpoint_b_single_1b: - type: tosca.capabilities.Endpoint.Admin - occurrences: - - 1 - - UNBOUNDED - feature_b_single_1b: - type: tosca.capabilities.Node - occurrences: - - 1 - - UNBOUNDED - disk.iops_b_single_1b: + disk.capacity_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_b_single_1b_1b_t2_port: + disk.ephemeral.size_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_b_single_1b_1b_t2_port: + disk.device.read.bytes_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_b_single_1b: - type: tosca.capabilities.Scalable - occurrences: - - 1 - - UNBOUNDED - disk.write.bytes_b_single_1b: + cpu_util_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - os_b_single_1b: - type: tosca.capabilities.OperatingSystem - occurrences: - - 1 - - UNBOUNDED - vcpus_b_single_1b: + disk.write.requests_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_b_single_1b: + disk.read.requests_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_b_single_1b: + disk.device.iops_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_b_single_1b_1b_t2_port: + disk.device.usage_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - instance_b_single_1b: + disk.read.bytes.rate_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_b_single_1b_1b_t1_port: + disk.device.write.requests.rate_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes_b_single_1b: + network.incoming.bytes.rate_a_single_2a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.latency_b_single_1b: + disk.write.requests.rate_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.usage_b_single_1b: + disk.device.latency_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_b_single_1b_1b_t1_port: + disk.read.bytes_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.allocation_b_single_1b: + disk.device.read.requests_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_b_single_1b_1b_t2_port: + disk.device.allocation_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_b_single_1b: + disk.latency_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.latency_b_single_1b: + network.incoming.packets.rate_a_single_2a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_b_single_1b_1b_t2_port: + disk.usage_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_b_single_1b_1b_t1_port: + network.incoming.bytes_a_single_2a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_b_single_1b_1b_t1_port: - type: tosca.capabilities.Attachment + scalable_a_single_2a: + type: tosca.capabilities.Scalable occurrences: - 1 - UNBOUNDED - disk.device.write.requests_b_single_1b: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + feature_a_single_2a_1a_t1_port: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - binding_b_single_1b_1b_t2_port: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface - occurrences: - - 0 - - UNBOUNDED - disk.ephemeral.size_b_single_1b: + disk.device.write.bytes_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_b_single_1b: + disk.device.read.bytes.rate_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_b_single_1b_1b_t2_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + endpoint_a_single_2a: + type: tosca.capabilities.Endpoint.Admin occurrences: - 1 - UNBOUNDED - disk.device.iops_b_single_1b: + disk.root.size_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_b_single_1b: + disk.device.write.requests_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_b_single_1b: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + attachment_a_single_2a_1a_t1_port: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - disk.root.size_b_single_1b: + disk.iops_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_b_single_1b_1b_t1_port: - type: tosca.capabilities.Node - occurrences: - - 1 - - UNBOUNDED - network.outgoing.bytes_b_single_1b_1b_t2_port: + vcpus_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.capacity_b_single_1b: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + os_a_single_2a: + type: tosca.capabilities.OperatingSystem occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_b_single_1b: + disk.write.bytes.rate_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_b_single_1b: + disk.device.capacity_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_b_single_1b: + cpu_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_b_single_1b: + disk.device.read.requests.rate_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests_b_single_1b: + memory.usage_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_b_single_1b_1b_t1_port: + network.outgoing.packets.rate_a_single_2a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_b_single_1b: + network.outpoing.packets_a_single_2a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_b_single_1b: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + binding_a_single_2a: + type: tosca.capabilities.network.Bindable occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_b_single_1b_1b_t1_port: + instance_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests_b_single_1b: + network.outgoing.bytes_a_single_2a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_b_single_1b_1b_t1_port: + disk.write.bytes_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_b_single_1b_1b_t1_port: + binding_a_single_2a_1a_t1_port: type: tosca.capabilities.network.Bindable valid_source_types: - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - 0 - UNBOUNDED - network.outpoing.packets_b_single_1b_1b_t1_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. - occurrences: - - 1 - - UNBOUNDED - disk.device.write.requests.rate_b_single_1b: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. - occurrences: - - 1 - - UNBOUNDED - memory.usage_b_single_1b: + network.incoming.packets_a_single_2a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_b_single_1b: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + host_a_single_2a: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent occurrences: - 1 - UNBOUNDED - network.incoming.bytes_b_single_1b_1b_t2_port: + disk.device.write.bytes.rate_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_b_single_1b_1b_t1_port: + memory_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu.delta_b_single_1b: + disk.allocation_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_b_single_1b: + memory.resident_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_b_single_1b: + network.outgoing.bytes.rate_a_single_2a_1a_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_b_single_1b: + cpu.delta_a_single_2a: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_b_single_1b: - type: tosca.capabilities.Container - valid_source_types: - - tosca.nodes.SoftwareComponent - occurrences: - - 1 - - UNBOUNDED - binding_b_single_1b: - type: tosca.capabilities.network.Bindable - occurrences: - - 1 - - UNBOUNDED - feature_b_single_1b_1b_t2_port: + feature_a_single_2a: type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - org.openecomp.resource.abstract.nodes.b_single_2b: + org.openecomp.resource.abstract.nodes.b_single_1b: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: port_1b_t1_port_order: @@ -7288,12 +8851,6 @@ node_types: type: string required: true status: SUPPORTED - compute_b_single_2b_scheduler_hints: - type: list - required: true - status: SUPPORTED - entry_schema: - type: json port_1b_t2_port_network_role: type: string required: true @@ -7302,6 +8859,12 @@ node_types: type: integer required: true status: SUPPORTED + compute_b_single_1b_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string port_1b_t2_port_exCP_naming: type: org.openecomp.datatypes.Naming required: true @@ -7314,16 +8877,16 @@ node_types: type: string required: true status: SUPPORTED - compute_b_single_2b_availability_zone: + port_1b_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + compute_b_single_1b_availability_zone: type: list required: true status: SUPPORTED entry_schema: type: string - port_1b_t2_port_mac_requirements: - type: org.openecomp.datatypes.network.MacRequirements - required: true - status: SUPPORTED index_value: type: integer description: Index value of this substitution service template runtime instance @@ -7332,36 +8895,30 @@ node_types: status: SUPPORTED constraints: - greater_or_equal: 0 - port_1b_t2_port_vlan_requirements: + compute_b_single_1b_scheduler_hints: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.network.VlanRequirements - port_1b_t2_port_ip_requirements: + type: json + port_1b_t2_port_vlan_requirements: type: list required: true status: SUPPORTED entry_schema: - type: org.openecomp.datatypes.network.IpRequirements - compute_b_single_2b_name: + type: org.openecomp.datatypes.network.VlanRequirements + port_1b_t2_port_ip_requirements: type: list required: true status: SUPPORTED entry_schema: - type: string + type: org.openecomp.datatypes.network.IpRequirements port_1b_t1_port_value_specs: type: list required: true status: SUPPORTED entry_schema: type: json - compute_b_single_2b_user_data_format: - type: list - required: true - status: SUPPORTED - entry_schema: - type: string port_1b_t1_port_network_role_tag: type: string required: true @@ -7392,424 +8949,564 @@ node_types: status: SUPPORTED entry_schema: type: string + compute_b_single_1b_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string attributes: - b_single_2b_instance_name: + b_single_1b_instance_name: + type: string + status: SUPPORTED + b_single_1b_1b_t1_port_tenant_id: type: string status: SUPPORTED requirements: - - dependency_b_single_2b: + - dependency_b_single_1b: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - local_storage_b_single_2b: + - local_storage_b_single_1b: capability: tosca.capabilities.Attachment node: tosca.nodes.BlockStorage relationship: tosca.relationships.AttachesTo occurrences: - 0 - UNBOUNDED - - dependency_b_single_2b_1b_t1_port: + - dependency_b_single_1b_1b_t1_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_b_single_2b_1b_t1_port: + - link_b_single_1b_1b_t1_port: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 - - dependency_b_single_2b_1b_t2_port: + - dependency_b_single_1b_1b_t2_port: capability: tosca.capabilities.Node node: tosca.nodes.Root relationship: tosca.relationships.DependsOn occurrences: - 0 - UNBOUNDED - - link_b_single_2b_1b_t2_port: + - link_b_single_1b_1b_t2_port: capability: tosca.capabilities.network.Linkable relationship: tosca.relationships.network.LinksTo occurrences: - 1 - 1 capabilities: - disk.usage_b_single_2b: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. - occurrences: - - 1 - - UNBOUNDED - network.incoming.bytes.rate_b_single_2b_1b_t2_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + attachment_b_single_1b_1b_t2_port: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_b_single_2b_1b_t2_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + endpoint_b_single_1b: + type: tosca.capabilities.Endpoint.Admin occurrences: - 1 - UNBOUNDED - attachment_b_single_2b_1b_t2_port: - type: tosca.capabilities.Attachment + feature_b_single_1b: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - disk.write.bytes.rate_b_single_2b: + disk.iops_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.capacity_b_single_2b: + network.incoming.bytes.rate_b_single_1b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu.delta_b_single_2b: + network.outgoing.bytes.rate_b_single_1b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - host_b_single_2b: - type: tosca.capabilities.Container - valid_source_types: - - tosca.nodes.SoftwareComponent + scalable_b_single_1b: + type: tosca.capabilities.Scalable occurrences: - 1 - UNBOUNDED - disk.device.write.requests_b_single_2b: + disk.write.bytes_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_b_single_2b_1b_t2_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + os_b_single_1b: + type: tosca.capabilities.OperatingSystem occurrences: - 1 - UNBOUNDED - disk.read.bytes_b_single_2b: + vcpus_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.iops_b_single_2b: + cpu_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.ephemeral.size_b_single_2b: + disk.device.read.requests.rate_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes.rate_b_single_2b_1b_t1_port: + network.incoming.packets.rate_b_single_1b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_b_single_2b_1b_t1_port: + instance_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests.rate_b_single_2b: + network.incoming.bytes.rate_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_b_single_2b: - type: tosca.capabilities.Node + disk.read.bytes_b_single_1b: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.resident_b_single_2b: + disk.device.latency_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.requests_b_single_2b: + disk.usage_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_b_single_2b_1b_t2_port: + network.incoming.bytes_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.capacity_b_single_2b: + disk.device.allocation_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.bytes_b_single_2b: + network.outgoing.packets.rate_b_single_1b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets.rate_b_single_2b_1b_t1_port: + disk.device.capacity_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - attachment_b_single_2b_1b_t1_port: - type: tosca.capabilities.Attachment + disk.latency_b_single_1b: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.write.bytes_b_single_2b: + network.incoming.packets_b_single_1b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_b_single_2b_1b_t2_port: + network.incoming.packets.rate_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - vcpus_b_single_2b: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + attachment_b_single_1b_1b_t1_port: + type: tosca.capabilities.Attachment occurrences: - 1 - UNBOUNDED - disk.device.read.requests.rate_b_single_2b: + disk.device.write.requests_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_b_single_2b_1b_t2_port: + binding_b_single_1b_1b_t2_port: type: tosca.capabilities.network.Bindable valid_source_types: - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - 0 - UNBOUNDED - instance_b_single_2b: + disk.ephemeral.size_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_b_single_2b_1b_t2_port: + disk.write.requests.rate_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.read.requests_b_single_2b: + network.outpoing.packets_b_single_1b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.latency_b_single_2b: + disk.device.iops_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_b_single_2b_1b_t2_port: + disk.read.requests_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.allocation_b_single_2b: + memory.resident_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.latency_b_single_2b: + disk.root.size_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - feature_b_single_2b_1b_t1_port: + feature_b_single_1b_1b_t1_port: type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED - disk.device.read.bytes.rate_b_single_2b: + network.outgoing.bytes_b_single_1b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outpoing.packets_b_single_2b_1b_t1_port: + disk.capacity_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes.rate_b_single_2b: + disk.device.write.bytes_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.allocation_b_single_2b: + disk.device.read.bytes_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory_b_single_2b: + disk.device.read.bytes.rate_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.packets.rate_b_single_2b_1b_t1_port: + cpu_util_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_b_single_2b: - type: tosca.capabilities.network.Bindable + disk.write.requests_b_single_1b: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.packets_b_single_2b_1b_t1_port: + network.outgoing.packets.rate_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes_b_single_2b_1b_t1_port: + disk.device.usage_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - binding_b_single_2b_1b_t1_port: - type: tosca.capabilities.network.Bindable - valid_source_types: - - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface - occurrences: - - 0 - - UNBOUNDED - feature_b_single_2b_1b_t2_port: - type: tosca.capabilities.Node + disk.read.bytes.rate_b_single_1b: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - os_b_single_2b: - type: tosca.capabilities.OperatingSystem + network.outgoing.bytes_b_single_1b_1b_t1_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.root.size_b_single_2b: + disk.device.read.requests_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.requests_b_single_2b: + network.incoming.packets_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - endpoint_b_single_2b: - type: tosca.capabilities.Endpoint.Admin + binding_b_single_1b_1b_t1_port: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface occurrences: - - 1 + - 0 - UNBOUNDED - disk.iops_b_single_2b: + network.outpoing.packets_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.bytes_b_single_2b: + disk.device.write.requests.rate_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - scalable_b_single_2b: - type: tosca.capabilities.Scalable + memory.usage_b_single_1b: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - memory.usage_b_single_2b: + disk.write.bytes.rate_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_util_b_single_2b: + network.incoming.bytes_b_single_1b_1b_t2_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.usage_b_single_2b: + network.outgoing.bytes.rate_b_single_1b_1b_t1_port: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.device.write.requests.rate_b_single_2b: + cpu.delta_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - cpu_b_single_2b: + disk.allocation_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - disk.read.bytes.rate_b_single_2b: + disk.device.write.bytes.rate_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.incoming.bytes_b_single_2b_1b_t2_port: + memory_b_single_1b: type: org.openecomp.capabilities.metric.Ceilometer description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - UNBOUNDED - network.outgoing.bytes.rate_b_single_2b_1b_t1_port: - type: org.openecomp.capabilities.metric.Ceilometer - description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + host_b_single_1b: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + binding_b_single_1b: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + feature_b_single_1b_1b_t2_port: + type: tosca.capabilities.Node occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.b_single_2b: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_1b_t1_port_order: + type: integer + required: true + status: SUPPORTED + port_1b_t1_port_network_role: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + compute_b_single_2b_metadata: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1b_t1_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + compute_b_single_2b_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_1b_t2_port_network_role: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_order: + type: integer + required: true + status: SUPPORTED + port_1b_t2_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_1b_t2_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1b_t2_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + compute_b_single_2b_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1b_t2_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_1b_t2_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_1b_t2_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + compute_b_single_2b_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_b_single_2b_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1b_t1_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_1b_t1_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_1b_t2_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_1b_t1_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + attributes: + b_single_2b_instance_name: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.b_single_2b_1: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -8354,4 +10051,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/twoAppearancePerPatternWithConnectivities/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/twoAppearancePerPatternWithConnectivities/out/MainServiceTemplate.yaml index 3dacbb2056..594a544d6b 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/twoAppearancePerPatternWithConnectivities/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/mixPatterns/twoAppearancePerPatternWithConnectivities/out/MainServiceTemplate.yaml @@ -1544,6 +1544,28 @@ topology_template: capability: tosca.capabilities.network.Linkable node: nested_network relationship: tosca.relationships.network.LinksTo + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo 1c1_t2_port_12: type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port properties: @@ -1677,6 +1699,28 @@ topology_template: capability: tosca.capabilities.network.Linkable node: nested_network relationship: tosca.relationships.network.LinksTo + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo 1c1_t2_port_11: type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port properties: diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/MainServiceTemplate.yaml index 0477fc36c5..da6640c27b 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/MainServiceTemplate.yaml @@ -185,6 +185,10 @@ topology_template: capability: tosca.capabilities.Node node: test_nested_no_compute relationship: tosca.relationships.DependsOn + - dependency_server_main_ps_1b_ps_server_main_1b: + capability: tosca.capabilities.Node + node: test_nested_no_compute + relationship: tosca.relationships.DependsOn test_nested1Level_duplicate_same_file: type: org.openecomp.resource.abstract.nodes.heat.nested1 directives: @@ -259,6 +263,14 @@ topology_template: capability: tosca.capabilities.Node node: test_nested_no_compute relationship: tosca.relationships.DependsOn + - dependency_server_main_1c1_cmaui_2_cmaui_1c1_main: + capability: tosca.capabilities.Node + node: test_nested_no_compute + relationship: tosca.relationships.DependsOn + - dependency_server_main_1c1_cmaui_1_cmaui_1c1_main: + capability: tosca.capabilities.Node + node: test_nested_no_compute + relationship: tosca.relationships.DependsOn test_nested_pattern_4_main_0: type: org.openecomp.resource.abstract.nodes.heat.pd_server_pattern4 directives: @@ -287,10 +299,28 @@ topology_template: floating_ip_count_required: is_required: false requirements: - - dependency: + - dependency_server_pd_pattern4: capability: tosca.capabilities.Node - node: test_nested_no_compute + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pd_pattern4: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pd_server_pattern4_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_pattern4_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_pd_server_pattern4_port_2: + capability: tosca.capabilities.Node + node: tosca.nodes.Root relationship: tosca.relationships.DependsOn + - link_pd_server_pattern4_port_2: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo test_nested1Level: type: org.openecomp.resource.abstract.nodes.heat.nested1 directives: @@ -319,4 +349,4 @@ topology_template: - test_nested_pattern_4_main_0 - abstract_pd_server_main_1b_1 - abstract_ps_server_main_1b_1 - - abstract_cmaui_1c1_main_1 + - abstract_cmaui_1c1_main_1
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/nested1ServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/nested1ServiceTemplate.yaml index c411944118..4308e668dc 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/nested1ServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/nested1ServiceTemplate.yaml @@ -130,6 +130,29 @@ topology_template: is_required: true floating_ip_count_required: is_required: false + requirements: + - dependency_server_pd_pattern4: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pd_pattern4: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pd_server_pattern4_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_pattern4_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_pd_server_pattern4_port_2: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_pattern4_port_2: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo abstract_ps_server_main_1b: type: org.openecomp.resource.abstract.nodes.ps_server_main_1b directives: @@ -2320,4 +2343,4 @@ topology_template: - dependency_test_nested_pattern_4_nested2 dependency_test_nested3Level_test_nested2Level: - test_nested2Level - - dependency_test_nested3Level + - dependency_test_nested3Level
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/nested2ServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/nested2ServiceTemplate.yaml index e7feb50e7b..4a129de7ec 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/nested2ServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/allPatternsDependsOnConnectivity/out/nested2ServiceTemplate.yaml @@ -149,6 +149,10 @@ topology_template: capability: tosca.capabilities.Node node: test_nested3Level relationship: tosca.relationships.DependsOn + - dependency_server_nested2_pd_1b_pd_server_nested2_1b: + capability: tosca.capabilities.Node + node: test_nested3Level + relationship: tosca.relationships.DependsOn test_nested_pattern_4_nested2: type: org.openecomp.resource.abstract.nodes.heat.pd_server_pattern4 directives: @@ -177,10 +181,28 @@ topology_template: floating_ip_count_required: is_required: false requirements: - - dependency: + - dependency_server_pd_pattern4: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pd_pattern4: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pd_server_pattern4_port_1: capability: tosca.capabilities.Node - node: test_resourceGroup + node: tosca.nodes.Root relationship: tosca.relationships.DependsOn + - link_pd_server_pattern4_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_pd_server_pattern4_port_2: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_pattern4_port_2: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo test_nested3Level: type: org.openecomp.resource.abstract.nodes.heat.nested3 directives: @@ -226,6 +248,29 @@ topology_template: is_required: true floating_ip_count_required: is_required: false + requirements: + - dependency_server_pd_pattern4: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pd_pattern4: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pd_server_pattern4_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_pattern4_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_pd_server_pattern4_port_2: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_pattern4_port_2: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo abstract_ps_server_nested2_1b: type: org.openecomp.resource.abstract.nodes.ps_server_nested2_1b directives: @@ -334,6 +379,14 @@ topology_template: capability: tosca.capabilities.Node node: test_nested3Level relationship: tosca.relationships.DependsOn + - dependency_server_nested2_1c1_cmaui_2_cmaui_1c1_nested2: + capability: tosca.capabilities.Node + node: test_nested3Level + relationship: tosca.relationships.DependsOn + - dependency_server_nested2_1c1_cmaui_1_cmaui_1c1_nested2: + capability: tosca.capabilities.Node + node: test_nested3Level + relationship: tosca.relationships.DependsOn groups: nested2_group: type: org.openecomp.groups.heat.HeatStack @@ -1498,4 +1551,4 @@ topology_template: - dependency dependency_pd_server_pattern4_port_1_test_nested_pattern_4_nested2: - test_nested_pattern_4_nested2 - - dependency_pd_server_pattern4_port_1 + - dependency_pd_server_pattern4_port_1
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/portSecurityGroupNetPattern1B/out/nested2ServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/portSecurityGroupNetPattern1B/out/nested2ServiceTemplate.yaml index 7983fe32f4..d06e2b7d58 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/portSecurityGroupNetPattern1B/out/nested2ServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/portSecurityGroupNetPattern1B/out/nested2ServiceTemplate.yaml @@ -122,6 +122,29 @@ topology_template: is_required: true floating_ip_count_required: is_required: false + requirements: + - dependency_cmaui_port_7: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_cmaui_port_7: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_cmaui_port_8: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_cmaui_port_8: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_cmaui: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_cmaui: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo abstract_sm_server: type: org.openecomp.resource.abstract.nodes.sm_server directives: @@ -771,4 +794,4 @@ topology_template: - dependency_oam_server_oam_server_port dependency_server_sm: - abstract_sm_server - - dependency_sm_server + - dependency_sm_server
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/twoNestedLevelsWithAllPatternsAndConnectivities/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/twoNestedLevelsWithAllPatternsAndConnectivities/out/MainServiceTemplate.yaml index 6d51056e60..04be425c13 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/twoNestedLevelsWithAllPatternsAndConnectivities/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/twoNestedLevelsWithAllPatternsAndConnectivities/out/MainServiceTemplate.yaml @@ -258,6 +258,29 @@ topology_template: port_pd_server_port_1_mac_requirements: mac_count_required: is_required: false + requirements: + - dependency_pd_server_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_pd_server_port_2: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_port_2: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pd: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pd: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo test_nested_no_compute: type: org.openecomp.resource.abstract.nodes.heat.nested-no-compute directives: @@ -305,6 +328,29 @@ topology_template: port_pd_server_port_1_mac_requirements: mac_count_required: is_required: false + requirements: + - dependency_pd_server_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_pd_server_port_2: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_port_2: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pd: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pd: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo packet_external_network: type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net properties: @@ -521,4 +567,4 @@ topology_template: value: get_attribute: - abstract_osm_server_1c2_1 - - osm_server_1c2_accessIPv4 + - osm_server_1c2_accessIPv4
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/twoNestedLevelsWithAllPatternsAndConnectivities/out/nested1ServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/twoNestedLevelsWithAllPatternsAndConnectivities/out/nested1ServiceTemplate.yaml index 6edd5eb6e4..049d11ded3 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/twoNestedLevelsWithAllPatternsAndConnectivities/out/nested1ServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/multiLevel/twoNestedLevelsWithAllPatternsAndConnectivities/out/nested1ServiceTemplate.yaml @@ -242,6 +242,29 @@ topology_template: port_pd_server_port_1_mac_requirements: mac_count_required: is_required: false + requirements: + - dependency_pd_server_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_pd_server_port_2: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_port_2: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pd: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pd: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo abstract_pd_server_1b: type: org.openecomp.resource.abstract.nodes.pd_server_1b directives: @@ -1666,4 +1689,4 @@ topology_template: - dependency dependency_server_1b_pd_2: - abstract_pd_server_1b - - dependency_pd_server_1b + - dependency_pd_server_1b
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedAllPatternsConnectivity/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedAllPatternsConnectivity/out/GlobalSubstitutionTypesServiceTemplate.yaml index d8db407d94..a9e42b46a8 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedAllPatternsConnectivity/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedAllPatternsConnectivity/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,637 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + p1: + type: string + description: UID of OAM network + required: true + status: SUPPORTED + p2: + type: string + description: UID of OAM network + required: true + status: SUPPORTED + port_pd_server_port_1_order: + type: integer + required: true + status: SUPPORTED + pd_server_names: + type: list + description: PD server names + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd_server_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd_server_port_2_network_role: + type: string + required: true + status: SUPPORTED + port_pd_server_port_1_network_role: + type: string + required: true + status: SUPPORTED + pd_server_flavor: + type: string + description: Flavor for PD server + required: true + status: SUPPORTED + port_pd_server_port_2_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd_server_port_2_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + availability_zone_0: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + net: + type: string + required: true + status: SUPPORTED + port_pd_server_port_2_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd_server_port_2_subnetpoolid: + type: string + required: true + status: SUPPORTED + pd_server_ips: + type: string + required: true + status: SUPPORTED + port_pd_server_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd_server_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + security_group_name: + type: list + description: CMAUI1, CMAUI2 server names + required: true + status: SUPPORTED + entry_schema: + type: string + ps_server_flavor: + type: string + description: Flavor for PS server + required: true + status: SUPPORTED + port_pd_server_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd_server_port_2_order: + type: integer + required: true + status: SUPPORTED + port_pd_server_port_2_network_role_tag: + type: string + required: true + status: SUPPORTED + pd_server_image: + type: string + description: Flavor for PD server + required: true + status: SUPPORTED + port_pd_server_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd_server_port_2_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd_server_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + attributes: + pattern4_attr_1: + type: string + description: pattern4_attr_1_value + status: SUPPORTED + requirements: + - dependency_pd_server_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pd_server_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_pd_server_port_2: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pd_server_port_2: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_pd: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_pd: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + capabilities: + disk.iops_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pd_server_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pd_server_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pd_server_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pd_server_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_server_pd: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_pd_server_port_2: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pd_server_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_pd_server_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pd_server_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pd_server_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + feature_pd_server_port_2: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_pd_server_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_pd_server_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_pd_server_port_2: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_pd_server_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + cpu.delta_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_pd: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pd_server_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pd_server_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pd_server_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pd_server_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pd_server_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pd_server_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_pd: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_pd: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + scalable_server_pd: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pd_server_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pd_server_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_pd: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_pd: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.ps_server_1b: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_ps_server_b_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_ps_server_b_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_ps_server_b_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_ps_server_b_port_network_role: + type: string + required: true + status: SUPPORTED + port_ps_server_b_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_ps_server_b_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_ps_server_b_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_ps_server_b_port_order: + type: integer + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_ps_server_b_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_ps_server_b_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_ps_server_b_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_ps_server_1b_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_ps_server_1b_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.oam_server_1c2: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -430,6 +1061,95 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.oam_server_1c2: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_oam_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + compute_oam_server_1c2_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_oam_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_oam_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_oam_port_order: + type: integer + required: true + status: SUPPORTED + port_oam_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + compute_oam_server_1c2_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_oam_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + vm_image_name: + type: string + required: true + status: SUPPORTED + port_oam_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_oam_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_oam_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_oam_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_oam_port_network_role: + type: string + required: true + status: SUPPORTED + attributes: + oam_server_1c2_accessIPv4: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.heat.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -1397,6 +2117,176 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.pd_server_1b: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_pd_server_1b_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd_server_b_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd_server_b_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd_server_b_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_pd_server_b_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd_server_b_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd_server_b_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd_server_b_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd_server_b_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd_server_b_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_1b_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd_server_b_port_order: + type: integer + required: true + status: SUPPORTED + port_pd_server_b_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + org.openecomp.resource.vfc.nodes.heat.cmaui_1c1: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_cmaui_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_cmaui_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_cmaui_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_cmaui_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_cmaui_1c1_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_cmaui_port_order: + type: integer + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_cmaui_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_cmaui_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_network_role: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_cmaui_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + compute_cmaui_1c1_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_subnetpoolid: + type: string + required: true + status: SUPPORTED org.openecomp.resource.abstract.nodes.heat.nested-no-compute: derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute properties: @@ -4671,4 +5561,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedAllPatternsConnectivity/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedAllPatternsConnectivity/out/MainServiceTemplate.yaml index 1602a813ba..4b52dd0087 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedAllPatternsConnectivity/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedOtherScenarios/oneLevel/nestedAllPatternsConnectivity/out/MainServiceTemplate.yaml @@ -61,6 +61,29 @@ topology_template: port_pd_server_port_1_mac_requirements: mac_count_required: is_required: false + requirements: + - dependency_pd_server_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_pd_server_port_2: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pd_server_port_2: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pd: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pd: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo test_nested_no_compute: type: org.openecomp.resource.abstract.nodes.heat.nested-no-compute directives: diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/diffNestedFilesWithSameComputeType/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/diffNestedFilesWithSameComputeType/out/GlobalSubstitutionTypesServiceTemplate.yaml index 92ea0fa5e7..ae6167dd3e 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/diffNestedFilesWithSameComputeType/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/diffNestedFilesWithSameComputeType/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -564,6 +564,565 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.pcm_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pcm_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + availabilityzone_name: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + port_pcm_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_image_name: + type: string + description: PCRF CM image name + required: true + status: SUPPORTED + port_pcm_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + pcm_server_name: + type: string + description: PCRF CM server name + required: true + status: SUPPORTED + cps_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + oam_net_name: + type: string + description: OAM network name + required: true + status: SUPPORTED + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + oam_net_gw: + type: string + description: CPS network gateway + required: true + status: SUPPORTED + security_group_name: + type: string + description: the name of security group + required: true + status: SUPPORTED + cps_net_ip: + type: string + description: CPS network ip + required: true + status: SUPPORTED + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_flavor_name: + type: string + description: flavor name of PCRF CM instance + required: true + status: SUPPORTED + pcm_vol: + type: string + description: CPS Cluman Cinder Volume + required: true + status: SUPPORTED + port_pcm_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + cps_net_name: + type: string + description: CPS network name + required: true + status: SUPPORTED + oam_net_ip: + type: string + description: OAM network ip + required: true + status: SUPPORTED + oam_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_order: + type: integer + required: true + status: SUPPORTED + attributes: + server_pcm_id: + type: string + description: the pcm nova service id + status: SUPPORTED + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + capabilities: + network.incoming.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_pcm_port_0: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_pcm_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + memory.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_pcm: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_0: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_0: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + endpoint_server_pcm: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_pcm: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_pcm: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_pcm: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_pcm: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED org.openecomp.resource.abstract.nodes.heat.pcm_server_1: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -1418,3 +1977,40 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.compute: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_compute_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_image_name: + type: string + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_compute_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_flavor_name: + type: string + required: true + status: SUPPORTED + compute_compute_config_drive: + type: list + required: true + status: SUPPORTED + entry_schema: + type: boolean
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/diffNestedFilesWithSameComputeType/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/diffNestedFilesWithSameComputeType/out/MainServiceTemplate.yaml index f57796a212..ccafac79bd 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/diffNestedFilesWithSameComputeType/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/diffNestedFilesWithSameComputeType/out/MainServiceTemplate.yaml @@ -91,6 +91,29 @@ topology_template: get_input: - pcm_server_names - 0 + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo server_pcm_001: type: org.openecomp.resource.abstract.nodes.heat.pcm_server_1 directives: @@ -128,6 +151,29 @@ topology_template: get_input: - pcm_server_names - 0 + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo compute_port_0: type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port properties: diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/multipleReferencesToSameNestedFilesWithSameComputeType/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/multipleReferencesToSameNestedFilesWithSameComputeType/out/MainServiceTemplate.yaml index 674b1e8d9c..17124e4463 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/multipleReferencesToSameNestedFilesWithSameComputeType/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/multipleReferencesToSameNestedFilesWithSameComputeType/out/MainServiceTemplate.yaml @@ -1058,10 +1058,21 @@ topology_template: vson_vm_names: - get_input: vson_clm_name_0 requirements: - - dependency: + - dependency_vson_server: capability: tosca.capabilities.Node - node: oam_net_security_group + node: tosca.nodes.Root relationship: tosca.relationships.DependsOn + - local_storage_vson_server: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_vson_server_oam_net_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_vson_server_oam_net_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo vson_mgt_group: type: org.openecomp.resource.abstract.nodes.heat.vson_vm_2 directives: @@ -1126,6 +1137,22 @@ topology_template: get_input: oam_net_id vson_vm_names: - get_input: vson_mgt_name_0 + requirements: + - dependency_vson_server: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_vson_server: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_vson_server_oam_net_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_vson_server_oam_net_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo vson_dbs_volume_1: type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume properties: @@ -1208,6 +1235,22 @@ topology_template: get_input: oam_net_id vson_vm_names: - get_input: vson_dbc_name_0 + requirements: + - dependency_vson_server: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_vson_server: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_vson_server_oam_net_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_vson_server_oam_net_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo vson_dbs_volume_0: type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume properties: @@ -1287,6 +1330,22 @@ topology_template: get_input: oam_net_id vson_vm_names: - get_input: vson_clm_name_0 + requirements: + - dependency_vson_server: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_vson_server: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_vson_server_oam_net_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_vson_server_oam_net_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo vson_dcl_volume_2: type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume properties: @@ -1405,6 +1464,22 @@ topology_template: get_input: oam_net_id vson_vm_names: - get_input: vson_mdr_name_0 + requirements: + - dependency_vson_server: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_vson_server: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_vson_server_oam_net_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_vson_server_oam_net_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo vson_dbs_group: type: org.openecomp.resource.abstract.nodes.heat.vson_vm_1 directives: @@ -1477,6 +1552,22 @@ topology_template: vson_vm_names: - get_input: vson_dbs_name_0 - get_input: vson_dbs_name_1 + requirements: + - dependency_vson_server: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_vson_server: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_vson_server_oam_net_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_vson_server_oam_net_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo vson_app_group: type: org.openecomp.resource.abstract.nodes.heat.vson_vm directives: @@ -1551,6 +1642,22 @@ topology_template: get_input: oam_net_id vson_vm_names: - get_input: vson_app_name_0 + requirements: + - dependency_vson_server: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_vson_server: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_vson_server_oam_net_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_vson_server_oam_net_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo oam_net_security_group: type: org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules properties: @@ -1777,6 +1884,22 @@ topology_template: get_input: oam_net_id vson_vm_names: - get_input: vson_dbg_name_0 + requirements: + - dependency_vson_server: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_vson_server: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_vson_server_oam_net_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_vson_server_oam_net_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo vson_cll_group: type: org.openecomp.resource.abstract.nodes.heat.vson_vm_1 directives: @@ -1852,6 +1975,22 @@ topology_template: - get_input: vson_cll_name_0 - get_input: vson_cll_name_1 - get_input: vson_cll_name_2 + requirements: + - dependency_vson_server: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_vson_server: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_vson_server_oam_net_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_vson_server_oam_net_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo vson_app_volume_0: type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume properties: @@ -1930,6 +2069,22 @@ topology_template: get_input: oam_net_id vson_vm_names: - get_input: vson_mon_name_0 + requirements: + - dependency_vson_server: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_vson_server: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_vson_server_oam_net_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_vson_server_oam_net_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo vson_dcl_group: type: org.openecomp.resource.abstract.nodes.heat.vson_vm_1 directives: @@ -2006,6 +2161,22 @@ topology_template: - get_input: vson_dcl_name_0 - get_input: vson_dcl_name_1 - get_input: vson_dcl_name_2 + requirements: + - dependency_vson_server: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_vson_server: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_vson_server_oam_net_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_vson_server_oam_net_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo groups: module_5_vson_dbg_volume_group: type: org.openecomp.groups.heat.HeatStack diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/MANIFEST.json new file mode 100644 index 0000000000..cdfb18bf6d --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/MANIFEST.json @@ -0,0 +1,35 @@ +{ + "name": "vEP_JSA_Net", + "description": "Version 2.0 02-09-2016 (Authors: John Doe, user PROD)", + "version": "2013-05-23", + "data": [ + { + "file": "base_cscf.yaml", + "type": "HEAT", + "data": [ + { + "file": "base_cscf.env", + "type": "HEAT_ENV" + } + ] + }, + { + "file": "base_cscf_volume.yaml", + "type": "HEAT_VOL", + "data": [ + { + "file": "base_cscf_volume.env", + "type": "HEAT_ENV" + } + ] + }, + { + "file": "nested_cscf.yaml", + "type": "HEAT" + }, + { + "file": "nested_tdcore.yaml", + "type": "HEAT" + } + ] +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf.env new file mode 100644 index 0000000000..5439cc54b5 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf.env @@ -0,0 +1,406 @@ +## Copyright:: Nokia Corporation 2017 +## Note: Nokia VM HOT file for CFX-5000 IMS17.0 +## Name: "base_cscf.env" +## History +## Date: 23 Aug 2017 +## 1. corrected the flavour +## 2. internal ip range to match the TPD for all VMs +## 3. number of internal ip assignment in list +## a) cscf_internal_zone_0_ips +## b) cscf_internal_zone_1_ips +## c) cscf_internal_zone_0_v6_ips +## d) cscf_internal_zone_1_v6_ips +## e) tdcore_internal_zone_0_ips +## f) tdcore_internal_zone_1_ips +## to match the count of cscf and tdcore. +## +## Kilo Version + +parameters: +# PSEUDO CONSTANTS +# ----------------------------------------------------------------------------- + vcscf_release: "17.0" + vcscf_name_delimeter: "_" + vcscf_internal_network_mtu: 1500 + + oam_image_name: IMS_17_0_OPENSTACK_OAM_1701400.000 + cif_image_name: IMS_17_0_OPENSTACK_CSCF_1701400.000 + lbd_image_name: IMS_17_0_OPENSTACK_CSCF_1701400.000 + cdi_image_name: IMS_17_0_OPENSTACK_CSCF_1701400.000 + cscf_image_name: IMS_17_0_OPENSTACK_CSCF_1701400.000 + tdcore_image_name: IMS_17_0_OPENSTACK_CSCF_1701400.000 + + oam_flavor_name: ND.c4r32d30 + cscf_flavor_name: ND.c8r16d38 + cif_flavor_name: ND.c4r16d38 + lbd_flavor_name: ND.c4r16d38 + tdcore_flavor_name: ND.c4r16d38 + cdi_flavor_name: ND.c4r8d38 + + + # vCSCF VM Counts + + cscf_zone_0_count: 19 + cscf_zone_1_count: 18 + tdcore_zone_0_count: 4 + tdcore_zone_1_count: 4 + + + # vCSCF Internal Network + + vcscf_internal_netmask: 255.255.255.0 + vcscf_internal_network_cidr: 192.168.210.0/24 + vcscf_internal_network_v6_cidr: 2a00:9a00:a000:1190:0:1:1:2b00/120 + vcscf_internal_dpdk_network_cidr: 192.168.211.0/24 + + # OAM Internal network + + oam_internal_vip_0: 192.168.210.3 + oam_internal_ip_0: 192.168.210.136 + oam_internal_ip_1: 192.168.210.137 + oam_internal_ip_2: 192.168.210.138 + + # CSCF VM Internal Network + + cscf_internal_zone_0_ips: + - 192.168.210.16 + - 192.168.210.18 + - 192.168.210.20 + - 192.168.210.22 + - 192.168.210.24 + - 192.168.210.26 + - 192.168.210.28 + - 192.168.210.30 + - 192.168.210.32 + - 192.168.210.34 + - 192.168.210.36 + - 192.168.210.38 + - 192.168.210.40 + - 192.168.210.42 + - 192.168.210.44 + - 192.168.210.46 + - 192.168.210.48 + - 192.168.210.50 + - 192.168.210.52 + + cscf_internal_zone_1_ips: + - 192.168.210.17 + - 192.168.210.19 + - 192.168.210.21 + - 192.168.210.23 + - 192.168.210.25 + - 192.168.210.27 + - 192.168.210.29 + - 192.168.210.31 + - 192.168.210.33 + - 192.168.210.35 + - 192.168.210.37 + - 192.168.210.39 + - 192.168.210.41 + - 192.168.210.43 + - 192.168.210.45 + - 192.168.210.47 + - 192.168.210.49 + - 192.168.210.51 + cscf_internal_zone_0_v6_ips: + - "2a00:9a00:a000:1190:0:1:1:2b10" + - "2a00:9a00:a000:1190:0:1:1:2b12" + - "2a00:9a00:a000:1190:0:1:1:2b14" + - "2a00:9a00:a000:1190:0:1:1:2b16" + - "2a00:9a00:a000:1190:0:1:1:2b18" + - "2a00:9a00:a000:1190:0:1:1:2b1a" + - "2a00:9a00:a000:1190:0:1:1:2b1c" + - "2a00:9a00:a000:1190:0:1:1:2b1e" + - "2a00:9a00:a000:1190:0:1:1:2b20" + - "2a00:9a00:a000:1190:0:1:1:2b22" + - "2a00:9a00:a000:1190:0:1:1:2b24" + - "2a00:9a00:a000:1190:0:1:1:2b26" + - "2a00:9a00:a000:1190:0:1:1:2b28" + - "2a00:9a00:a000:1190:0:1:1:2b2a" + - "2a00:9a00:a000:1190:0:1:1:2b2c" + - "2a00:9a00:a000:1190:0:1:1:2b2e" + - "2a00:9a00:a000:1190:0:1:1:2b30" + - "2a00:9a00:a000:1190:0:1:1:2b32" + - "2a00:9a00:a000:1190:0:1:1:2b34" + + cscf_internal_zone_1_v6_ips: + - "2a00:9a00:a000:1190:0:1:1:2b11" + - "2a00:9a00:a000:1190:0:1:1:2b13" + - "2a00:9a00:a000:1190:0:1:1:2b15" + - "2a00:9a00:a000:1190:0:1:1:2b17" + - "2a00:9a00:a000:1190:0:1:1:2b19" + - "2a00:9a00:a000:1190:0:1:1:2b1b" + - "2a00:9a00:a000:1190:0:1:1:2b1d" + - "2a00:9a00:a000:1190:0:1:1:2b1f" + - "2a00:9a00:a000:1190:0:1:1:2b21" + - "2a00:9a00:a000:1190:0:1:1:2b23" + - "2a00:9a00:a000:1190:0:1:1:2b25" + - "2a00:9a00:a000:1190:0:1:1:2b27" + - "2a00:9a00:a000:1190:0:1:1:2b29" + - "2a00:9a00:a000:1190:0:1:1:2b2b" + - "2a00:9a00:a000:1190:0:1:1:2b2d" + - "2a00:9a00:a000:1190:0:1:1:2b2f" + - "2a00:9a00:a000:1190:0:1:1:2b31" + - "2a00:9a00:a000:1190:0:1:1:2b33" + + # TDCore VM Internal Network + + tdcore_internal_zone_0_ips: + - 192.168.210.8 + - 192.168.210.10 + - 192.168.210.12 + - 192.168.210.14 + + tdcore_internal_zone_1_ips: + - 192.168.210.9 + - 192.168.210.11 + - 192.168.210.13 + - 192.168.210.15 + # TDCore VM DPDK Internal Network + + tdcore_dpdk_zone_0_ips: + - 192.168.211.8 + - 192.168.211.10 + - 192.168.211.12 + - 192.168.211.14 + + tdcore_dpdk_zone_1_ips: + - 192.168.211.9 + - 192.168.211.11 + - 192.168.211.13 + - 192.168.211.15 + + # CIF VM Internal Network + + cif_internal_ip_0: 192.168.210.1 + cif_internal_ip_1: 192.168.210.2 + cif_internal_vip_0: 192.168.210.150 + cif_internal_v6_ip_0: "2a00:9a00:a000:1190:0:1:1:2b04" + cif_internal_v6_ip_1: "2a00:9a00:a000:1190:0:1:1:2b05" + + # LBD (l2TD) VM Internal Network + + lbd_internal_ip_0: 192.168.210.4 + lbd_internal_ip_1: 192.168.210.5 + + # LBD (l2TD) VM DPDK Internal Network + + lbd_internal_dpdk_ip_0: 192.168.211.1 + lbd_internal_dpdk_ip_1: 192.168.211.2 + lbd_internal_dpdk_vip_0: 192.168.211.181 + + # CDI VM Internal Network + + cdi_internal_ip_0: 192.168.210.139 + cdi_internal_ip_1: 192.168.210.140 + + + cdi_internal_v6_ip_0: "2a00:9a00:a000:1190:0:1:1:2b8b" + cdi_internal_v6_ip_1: "2a00:9a00:a000:1190:0:1:1:2b8c" + cdi_internal_v6_vip_0: "2a00:9a00:a000:1190:0:1:1:2b8d" + +# SITE SPECIFIC +# ----------------------------------------------------------------------------- +# oam_volume_id_0: f0781f87-671c-40c0-82ce-4d8c0531fbc1 +# oam_volume_id_1: 53a1d529-47a1-4722-bab0-d502603eef14 +# cif_volume_id_0: d2262ef6-7bac-4c4e-abfb-fd78e3f0cc0b +# cif_volume_id_1: b1f6f2bc-6774-4c66-88ef-cb225d216bf0 +# +# +#------------------------------------ +# Preload Sheet +#------------------------------------ +# # Network IDs +# oam_net_id: LAN1 +# ims_core_net_id: ipv6_1256 +# ims_li_v6_net_id: ipv6_1255 +# +# # instance availability zones for 1+1 pairs +# availability_zone_0: zone1 +# availability_zone_1: zone2 +# +# cif_oam_ip_0: 192.168.1.26 +# cif_oam_ip_1: 192.168.1.27 +# +# Tag Value +# cif_oam_vip_0: 192.168.1.28 +# +# cif_ims_core_v6_ip_0: "2a00:8a00:a000:4000::308" +# cif_ims_core_v6_ip_1: "2a00:8a00:a000:4000::309" +# cif_ims_core_v6_vip_0: "2a00:8a00:a000:4000::310" +# +# # Seperated Interface for LI-X1 (eth3) +# cif_oam_ip_2: 192.168.1.29 +# cif_oam_ip_3: 192.168.1.30 +# +# Tag Value +# cif_oam_vip_1: 192.168.1.31 +# +# # Seperated Interface for LI-X2 (eth4) +# +# cif_ims_li_v6_ip_0: "2a00:8a00:a000:4000::284" +# cif_ims_li_v6_ip_1: "2a00:8a00:a000:4000::285" +# cif_ims_li_v6_vip_0: "2a00:8a00:a000:4000::286" +# +# +# lbd_ims_core_v6_ip_0: "2a00:8a00:a000:4000::311" +# lbd_ims_core_v6_ip_1: "2a00:8a00:a000:4000::312" +# lbd_ims_core_v6_vip_0: "2a00:8a00:a000:4000::313" +# +# +# cdi_ims_core_v6_ip_0: "2a00:8a00:a000:4000::314" +# cdi_ims_core_v6_ip_1: "2a00:8a00:a000:4000::315" +# cdi_ims_core_v6_vip_0: "2a00:8a00:a000:4000::316" +# +# oam_name_0: cscf0011vm001oam001 +# oam_name_1: cscf0011vm002oam001 +# oam_name_2: cscf0011vm003oam001 +# cif_name_0: cscf0011vm004cif001 +# cif_name_1: cscf0011vm005cif001 +# cdi_name_0: cscf0011vm006cdi001 +# cdi_name_1: cscf0011vm007cdi001 +# lbd_name_0: cscf0011vm008lbd001 +# lbd_name_1: cscf0011vm009lbd001 +# +#------------------------------------ +# Tag values +#------------------------------------ +# +# vcscf_dn: DN1 +# vcscf_du: DU1 +# vcscf_cmrepo_address: 10.111.12.71 +# vcscf_swrepo_address: 10.111.12.71 +# vcscf_dns_address: 10.111.12.67 +# +# vnf_name: CSCF0001 +# vnf_id: CSCF0001 +# vf_module_name: CSCF0001 +# vf_module_id: CSCF0001 +# +# vcscf_oam_netmask: 255.255.255.0 +# vcscf_default_gateway: 192.168.1.1 +# +# oam_oam_vip_0: 192.168.1.21 +# oam_oam_ip_0: 192.168.1.23 +# oam_oam_ip_1: 192.168.1.24 +# oam_oam_ip_2: 192.168.1.25 +# +# tdcore_zone_0_names: +# - cscf0011vm101sip001 +# - cscf0011vm103sip001 +# - cscf0011vm105sip001 +# - cscf0011vm107sip001 +# +# tdcore_zone_1_names: +# - cscf0011vm102sip001 +# - cscf0011vm104sip001 +# - cscf0011vm106sip001 +# - cscf0011vm108sip001 +# +# cscf_zone_0_names: +# - cscf0011vm201scf001 +# - cscf0011vm203scf001 +# - cscf0011vm205scf001 +# - cscf0011vm207scf001 +# - cscf0011vm209scf001 +# - cscf0011vm211scf001 +# - cscf0011vm213scf001 +# - cscf0011vm215scf001 +# - cscf0011vm217scf001 +# - cscf0011vm219scf001 +# - cscf0011vm221scf001 +# - cscf0011vm223scf001 +# - cscf0011vm225scf001 +# - cscf0011vm227scf001 +# - cscf0011vm229scf001 +# - cscf0011vm231scf001 +# - cscf0011vm233scf001 +# - cscf0011vm235scf001 +# - cscf0011vm237scf001 +# +# cscf_zone_1_names: +# - cscf0011vm202scf001 +# - cscf0011vm204scf001 +# - cscf0011vm206scf001 +# - cscf0011vm208scf001 +# - cscf0011vm210scf001 +# - cscf0011vm212scf001 +# - cscf0011vm214scf001 +# - cscf0011vm216scf001 +# - cscf0011vm218scf001 +# - cscf0011vm220scf001 +# - cscf0011vm222scf001 +# - cscf0011vm224scf001 +# - cscf0011vm226scf001 +# - cscf0011vm228scf001 +# - cscf0011vm230scf001 +# - cscf0011vm232scf001 +# - cscf0011vm234scf001 +# - cscf0011vm236scf001 +# +# # Below value should be taken from CMRepo after parsing the TPD or the below names should be used while parsing TPD as input +# +# oam_uuid_0: cscf0011vm001oam001 +# oam_uuid_1: cscf0011vm002oam001 +# oam_uuid_2: cscf0011vm003oam001 +# cif_uuid_0: cscf0011vm004cif001 +# cif_uuid_1: cscf0011vm005cif001 +# lbd_uuid_0: cscf0011vm006cdi001 +# lbd_uuid_1: cscf0011vm007cdi001 +# cdi_uuid_0: cscf0011vm008lbd001 +# cdi_uuid_1: cscf0011vm009lbd001 +# +# tdcore_zone_0_uuids: +# - cscf0011vm101sip001 +# - cscf0011vm103sip001 +# - cscf0011vm105sip001 +# - cscf0011vm107sip001 +# +# tdcore_zone_1_uuids: +# - cscf0011vm102sip001 +# - cscf0011vm104sip001 +# - cscf0011vm106sip001 +# - cscf0011vm108sip001 +# +# cscf_zone_0_uuids: +# - cscf0011vm201scf001 +# - cscf0011vm203scf001 +# - cscf0011vm205scf001 +# - cscf0011vm207scf001 +# - cscf0011vm209scf001 +# - cscf0011vm211scf001 +# - cscf0011vm213scf001 +# - cscf0011vm215scf001 +# - cscf0011vm217scf001 +# - cscf0011vm219scf001 +# - cscf0011vm221scf001 +# - cscf0011vm223scf001 +# - cscf0011vm225scf001 +# - cscf0011vm227scf001 +# - cscf0011vm229scf001 +# - cscf0011vm231scf001 +# - cscf0011vm233scf001 +# - cscf0011vm235scf001 +# - cscf0011vm237scf001 +# +# cscf_zone_1_uuids: +# - cscf0011vm202scf001 +# - cscf0011vm204scf001 +# - cscf0011vm206scf001 +# - cscf0011vm208scf001 +# - cscf0011vm210scf001 +# - cscf0011vm212scf001 +# - cscf0011vm214scf001 +# - cscf0011vm216scf001 +# - cscf0011vm218scf001 +# - cscf0011vm220scf001 +# - cscf0011vm222scf001 +# - cscf0011vm224scf001 +# - cscf0011vm226scf001 +# - cscf0011vm228scf001 +# - cscf0011vm230scf001 +# - cscf0011vm232scf001 +# - cscf0011vm234scf001 +# - cscf0011vm236scf001 + + diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf.yaml new file mode 100644 index 0000000000..f907f2849d --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf.yaml @@ -0,0 +1,2045 @@ +## Copyright:: Nokia Corporation 2017 +## Note: Nokia VM HOT file for CFX +## Name: "base_cscf.yaml" +## Date: 20 Mar 2017 +## Kilo Version +heat_template_version: 2015-04-30 + +description: > + CFX-5000 N+K VNF HOT template for AT&T. + +parameters: + + vnf_name: + type: string + description: Unique name for this VF instance + + vnf_id: + type: string + description: Unique ID for this VF instance + + vf_module_name: + type: string + description: Unique name for this VF Module instance + + vf_module_id: + type: string + description: Unique ID for this VF Module instance + + cif_volume_id_0: + type: string + description: size of the cinder volume used for cif + cif_volume_id_1: + type: string + description: size of the cinder volume used for cif + + oam_volume_id_0: + type: string + description: size of the cinder volume used for oam + oam_volume_id_1: + type: string + description: size of the cinder volume used for oam + + oam_net_id: + type: string + description: Name/UUID of OAM network + + ims_core_net_id: + type: string + description: Name/UUID of Core network + + ims_li_v6_net_id: + type: string + description: Name/UUID of V6 LI network + + availability_zone_0: + type: string + description: > + Availability zone where the first node of a pair will be deployed. + Availability zone 0 and 1 can have same zone name if single zone is used. + + availability_zone_1: + type: string + description: > + Availability zone where the second node of a pair will be deployed. + Availability zone 0 and 1 can have same zone name if single zone is used. + + oam_image_name: + type: string + description: OAM VM image name + + cif_image_name: + type: string + description: CSCF CIF VM image name + + lbd_image_name: + type: string + description: CSCF LBD VM image name + + cdi_image_name: + type: string + description: CDI VM image name + + cscf_image_name: + type: string + description: CSCF server VM image name + + tdcore_image_name: + type: string + description: TDCORE VM image name + + oam_flavor_name: + type: string + description: OAM VM flavor + + cscf_flavor_name: + type: string + description: CSCF server VM flavor + + cif_flavor_name: + type: string + description: CSCF CIF VM flavor + + lbd_flavor_name: + type: string + description: CSCF LBD VM flavor + + tdcore_flavor_name: + type: string + description: TDCORE VM flavor + + cdi_flavor_name: + type: string + description: CDI VM flavor + + cscf_zone_0_count: + type: number + description: > + Number of CSCF to be deployed on zone 0. + This parameter is used to scale the cscf instances. + constraints: + - range: { min: 0, max: 120 } + + cscf_zone_1_count: + type: number + description: > + Number of CSCF to be deployed on zone 1. + This parameter is used to scale the cscf instances. + constraints: + - range: { min: 0, max: 120 } + + tdcore_zone_0_count: + type: number + description: > + Number of TD Core VMs to be deployed zone 0. + This parameter is used to scale the TD Core instances. + constraints: + - range: { min: 0, max: 8 } + + tdcore_zone_1_count: + type: number + description: > + Number of TD Core VMs to be deployed zone 1. + This parameter is used to scale the TD Core instances. + constraints: + - range: { min: 0, max: 8 } + + vcscf_internal_netmask: + type: string + description: Netmask for Internal LAN + + vcscf_internal_network_cidr: + type: string + description: CIDR for for Internal LAN + + vcscf_internal_network_v6_cidr: + type: string + description: CIDR for for Internal LAN v6 + + vcscf_internal_dpdk_network_cidr: + type: string + description: CIDR for for Internal LAN DPDK + + vcscf_oam_netmask: + type: string + description: Netmask for OAM LAN + + vcscf_default_gateway: + type: string + description: Default gateway for OAM LAN + + oam_oam_vip_0: + type: string + description: OAM CIPA IP of OAM unit + + oam_oam_ip_0: + type: string + description: OAM IP of OAM01 instance + + oam_oam_ip_1: + type: string + description: OAM IP of OAM02 instance + + oam_oam_ip_2: + type: string + description: OAM IP of OAM03 instance + + oam_internal_vip_0: + type: string + description: Internal CIPA IP of OAM unit + + oam_internal_ip_0: + type: string + description: Internal IP of OAM01 instance + + oam_internal_ip_1: + type: string + description: Internal IP of OAM01 instance + + oam_internal_ip_2: + type: string + description: Internal IP of OAM01 instance + + cscf_internal_zone_0_ips: + type: comma_delimited_list + description: "List of Internal Lan IPs for CSCF instances on zone 0" + + cscf_internal_zone_0_v6_ips: + type: comma_delimited_list + description: "List of Internal Lan v6 IPs for CSCF instances on zone 0" + + cscf_internal_zone_1_ips: + type: comma_delimited_list + description: "List of Internal Lan IPs for CSCF instances on zone 1" + + cscf_internal_zone_1_v6_ips: + type: comma_delimited_list + description: "List of Internal Lan v6 IPs for CSCF instances on zone 1" + + tdcore_internal_zone_0_ips: + type: comma_delimited_list + description: "List of Internal Lan IPs for TDCORE instances on zone 0" + + tdcore_dpdk_zone_0_ips: + type: comma_delimited_list + description: "List of DPDK Lan IPs for TDCORE instances on zone 0" + + tdcore_internal_zone_1_ips: + type: comma_delimited_list + description: "List of Internal Lan IPs for TDCORE instances on zone 1" + + tdcore_dpdk_zone_1_ips: + type: comma_delimited_list + description: "List of DPDK Lan IPs for TDCORE instances on zone 1" + + cif_internal_ip_0: + type: string + description: Internal IP of CIF01 instance + + cif_internal_ip_1: + type: string + description: Internal IP of CIF02 instance + + cif_internal_vip_0: + type: string + description: Internal CIPA IP of CIF + + cif_internal_v6_ip_0: + type: string + description: Internal IP v6 of CIF01 instance + + cif_internal_v6_ip_1: + type: string + description: Internal IP v6 of CIF02 instance + + cif_oam_ip_0: + type: string + description: OAM IP of CIF01 instance + + cif_oam_ip_1: + type: string + description: OAM IP of CIF02 instance + + cif_oam_vip_0: + type: string + description: OAM CIPA IP of CIF + + cif_ims_core_v6_ip_0: + type: string + description: IMS CORE v6 IP of CIF01 instance + + cif_ims_core_v6_ip_1: + type: string + description: IMS CORE v6 IP of CIF02 instance + + cif_ims_core_v6_vip_0: + type: string + description: IMS CORE v6 CIPA IP of CIF + + cif_oam_ip_2: + type: string + description: OAM (LI-X1) v4 IP of CIF01 instance + + cif_oam_ip_3: + type: string + description: OAM (LI-X1) v4 IP of CIF02 instance + + cif_oam_vip_1: + type: string + description: OAM (LI-X1) v4 CIPA of CIF + + cif_ims_li_v6_ip_0: + type: string + description: IMS LI v6 IP of CIF01 instance + + cif_ims_li_v6_ip_1: + type: string + description: IMS LI v6 IP of CIF02 instance + + cif_ims_li_v6_vip_0: + type: string + description: IMS LI CIPA v6 IP of CIF + + lbd_internal_ip_0: + type: string + description: Internal IP of LBD01 instance + + lbd_internal_ip_1: + type: string + description: Internal IP of LBD02 instance + + lbd_internal_dpdk_ip_0: + type: string + description: Internal DPDK IP of LBD01 instance + + lbd_internal_dpdk_ip_1: + type: string + description: Internal DPDK IP of LBD02 instance + + lbd_internal_dpdk_vip_0: + type: string + description: Internal DPDK CIP IP of LBD + + lbd_ims_core_v6_ip_0: + type: string + description: IMS CORE v6 IP of LBD01 instance + + lbd_ims_core_v6_ip_1: + type: string + description: IMS CORE v6 IP of LBD02 instance + + lbd_ims_core_v6_vip_0: + type: string + description: IMS CORE CIPA v6 IP of LBD + + cdi_internal_ip_0: + type: string + description: Internal IP of CDI01 instance + + cdi_internal_ip_1: + type: string + description: Internal IP of CDI02 instance + + cdi_internal_v6_ip_0: + type: string + description: Internal v6 IP of CDI01 instance + + cdi_internal_v6_ip_1: + type: string + description: Internal v6 IP of CDI02 instance + + cdi_internal_v6_vip_0: + type: string + description: Internal v6 CIPA IP of CDI + + cdi_ims_core_v6_ip_0: + type: string + description: IMS CORE LAN v6 IP of CDI01 instance + + cdi_ims_core_v6_ip_1: + type: string + description: IMS CORE LAN v6 IP of CDI02 instance + + cdi_ims_core_v6_vip_0: + type: string + description: IMS CORE LAN CIPA v6 IP of CDI + + vcscf_name_delimeter: + type: string + description: 'delimeter used in concatenating different words while naming (ex: "-","_",".",...)' + constraints: + - allowed_values: [ '-', '', '_', '.'] + + oam_name_0: + type: string + description: OAM01 instance name + + oam_name_1: + type: string + description: OAM02 instance name + + oam_name_2: + type: string + description: OAM03 instance name + + cif_name_0: + type: string + description: CIF01 instance name + + cif_name_1: + type: string + description: CIF02 instance name + + lbd_name_0: + type: string + description: LBD01 instance name + + lbd_name_1: + type: string + description: LBD02 instance name + + cdi_name_0: + type: string + description: CDI01 instance name + + cdi_name_1: + type: string + description: CDI02 instance name + + cscf_zone_0_names: + type: comma_delimited_list + description: "List of instance names for CSCF instances on zone 0" + + cscf_zone_1_names: + type: comma_delimited_list + description: "List of instance names for CSCF instances on zone 1" + + tdcore_zone_0_names: + type: comma_delimited_list + description: "List of instance names for TDCORE instances on zone 0" + + tdcore_zone_1_names: + type: comma_delimited_list + description: "List of instance names for TDCORE instances on zone 1" + + vcscf_release: + type: string + description: "IMS release" + + vcscf_dn: + type: string + description: "DN name" + + vcscf_du: + type: string + description: "DU name" + + vcscf_cmrepo_address: + type: string + description: "CMRepo IP or FQDN" + + vcscf_swrepo_address: + type: string + description: SWRepo IP or FQDN + + vcscf_dns_address: + type: string + description: DNS server IP + + vcscf_internal_network_mtu: + type: number + description: MTU for internal network interface (eth0) + constraints: + - range: { min: 1000, max: 9100 } + + oam_uuid_0: + type: string + description: UUID generated by cmrepo for OAM01 + + oam_uuid_1: + type: string + description: UUID generated by cmrepo for OAM02 + + oam_uuid_2: + type: string + description: UUID generated by cmrepo for OAM03 + + cif_uuid_0: + type: string + description: UUID generated by cmrepo for CIF01 + + cif_uuid_1: + type: string + description: UUID generated by cmrepo for CIF02 + + lbd_uuid_0: + type: string + description: UUID generated by cmrepo for LBD01 + + lbd_uuid_1: + type: string + description: UUID generated by cmrepo for LBD02 + + cdi_uuid_0: + type: string + description: UUID generated by cmrepo for CDI01 + + cdi_uuid_1: + type: string + description: UUID generated by cmrepo for CDI02 + + cscf_zone_0_uuids: + type: comma_delimited_list + description: "List of UUIDs generated by cmrepo for CSCF instances on zone 0" + + cscf_zone_1_uuids: + type: comma_delimited_list + description: "List of UUIDs generated by cmrepo for CSCF instances on zone 1" + + tdcore_zone_0_uuids: + type: comma_delimited_list + description: "List of UUIDs generated by cmrepo for TDCORE instances on zone 0" + + tdcore_zone_1_uuids: + type: comma_delimited_list + description: "List of UUIDs generated by cmrepo for TDCORE instances on zone 1" + +resources: + + cscf_RSG: + type: OS::Neutron::SecurityGroup + properties: + description: Allow all + name: + str_replace: + template: "$VNF$DELsecurity$DELgroup" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + rules: + - { direction: ingress, ethertype: IPv4 } + - { direction: egress, ethertype: IPv4 } + - { direction: ingress, ethertype: IPv6 } + - { direction: egress, ethertype: IPv6 } + + cscf_internal_network_0: + type: OS::Neutron::Net + properties: + name: + str_replace: + template: $PREFIX$DELinternal$DELnetwork + params: + $PREFIX: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + admin_state_up: True + shared: False + + cscf_internal_subnet_0: + type: OS::Neutron::Subnet + properties: + name: + str_replace: + template: $PREFIX$DELinternal$DELsubnet + params: + $PREFIX: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + ip_version: 4 + network: { get_resource: cscf_internal_network_0 } + cidr: { get_param: vcscf_internal_network_cidr } + enable_dhcp: False + gateway_ip: null + + cscf_internal_subnet_v6_0: + type: OS::Neutron::Subnet + properties: + name: + str_replace: + template: $PREFIX$DELinternal$DELsubnetv6 + params: + $PREFIX: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + ip_version: 6 + network: { get_resource: cscf_internal_network_0 } + cidr: { get_param: vcscf_internal_network_v6_cidr } + enable_dhcp: False + gateway_ip: null + + cscf_internal_dpdk_network_0: + type: OS::Neutron::Net + properties: + name: + str_replace: + template: $PREFIX$DELinternal$DELdpdk$DELnetwork + params: + $PREFIX: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + admin_state_up: True + shared: False + + cscf_internal_dpdk_subnet_0: + type: OS::Neutron::Subnet + properties: + name: + str_replace: + template: $PREFIX$DELinternal$DELdpdk$DELsubnet + params: + $PREFIX: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_dpdk_network_0 } + cidr: { get_param: vcscf_internal_dpdk_network_cidr } + enable_dhcp: False + gateway_ip: null + + cif_server_group: + type: OS::Nova::ServerGroup + properties: + name: + str_replace: + template: "$VNF$DELcif$DELgroup" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + policies: ["anti-affinity"] + + lbd_server_group: + type: OS::Nova::ServerGroup + properties: + name: + str_replace: + template: "$VNF$DELlbd$DELgroup" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + policies: ["anti-affinity"] + + cdi_server_group: + type: OS::Nova::ServerGroup + properties: + name: + str_replace: + template: "$VNF$DELcdi$DELgroup" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + policies: ["anti-affinity"] + + oam_server_group: + type: OS::Nova::ServerGroup + properties: + name: + str_replace: + template: "$VNF$DELoam$DELgroup" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + policies: ["anti-affinity"] + + tdcore_zone_0_server_group: + type: OS::Nova::ServerGroup + properties: + name: + str_replace: + template: "$VNF$DELtdcore$DELzone0$DELgroup" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + policies: ["anti-affinity"] + + tdcore_zone_1_server_group: + type: OS::Nova::ServerGroup + properties: + name: + str_replace: + template: "$VNF$DELtdcore$DELzone1$DELgroup" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + policies: ["anti-affinity"] + + cif_internal_vip_0_port: + type: OS::Neutron::Port + depends_on: + - cscf_internal_subnet_0 + properties: + name: + str_replace: + template: $NAME$DELcif$DELinternal$DELvip + params: + $NAME: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_internal_vip_0 } + + cif_oam_vip_1_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $NAME$DELcif$DELoam$DELvip0 + params: + $NAME: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: oam_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_oam_vip_0 } + + cif_ims_core_v6_vip_2_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $NAME$DELcif$DELims$DELcore$DELvip$DELv6 + params: + $NAME: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: ims_core_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_ims_core_v6_vip_0 } + + cif_oam_vip_3_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $NAME$DELcif$DELoam$DELvip1 + params: + $NAME: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: oam_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_oam_vip_1 } + + cif_ims_li_v6_vip_4_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $NAME$DELcif$DELims$DELli$DELvip$DELv6 + params: + $NAME: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: ims_li_v6_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_ims_li_v6_vip_0 } + + lbd_internal_dpdk_vip_1_port: + type: OS::Neutron::Port + depends_on: + - cscf_internal_dpdk_subnet_0 + properties: + name: + str_replace: + template: $NAME$DELlbd$DELinternal$DELdpdk$DELvip + params: + $NAME: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_dpdk_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: lbd_internal_dpdk_vip_0 } + + lbd_ims_core_v6_vip_2_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $NAME$DELlbd$DELims$DELcore$DELvip$DELv6 + params: + $NAME: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: ims_core_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: lbd_ims_core_v6_vip_0 } + + cdi_internal_v6_vip_0_port: + type: OS::Neutron::Port + depends_on: + - cscf_internal_subnet_v6_0 + properties: + name: + str_replace: + template: $NAME$DELcdi$DELinternal$DELvip$DELv6 + params: + $NAME: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cdi_internal_v6_vip_0 } + + cdi_ims_core_v6_vip_1_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $NAME$DELcdi$DELims$DELdb$DELvip$DELv6 + params: + $NAME: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: ims_core_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cdi_ims_core_v6_vip_0 } + + oam_internal_vip_0_port: + type: OS::Neutron::Port + depends_on: + - cscf_internal_subnet_0 + properties: + name: + str_replace: + template: $NAME$DELoam$DELinternal$DELvip + params: + $NAME: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: oam_internal_vip_0 } + + oam_oam_vip_1_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $NAME$DELoam$DELoam$DELvip + params: + $NAME: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: oam_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: oam_oam_vip_0 } + + oam_internal_0_port_0: + type: OS::Neutron::Port + depends_on: + - cscf_internal_subnet_0 + properties: + name: + str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: { get_param: oam_name_0 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: oam_internal_ip_0 } + allowed_address_pairs: + - ip_address: "0.0.0.0/1" + - ip_address: "128.0.0.0/1" + - ip_address: "::/1" + - ip_address: "8000::/1" + + oam_oam_0_port_1: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: { get_param: oam_name_0 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: oam_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: oam_oam_ip_0 } + allowed_address_pairs: + - ip_address: { get_param: oam_oam_vip_0} + + + oam_server_0: + type: OS::Nova::Server + properties: + availability_zone: { get_param: availability_zone_0 } + scheduler_hints: { group: { get_resource: oam_server_group } } + name: { get_param: oam_name_0 } + flavor: { get_param: oam_flavor_name } + image: { get_param: oam_image_name } + metadata: + vm_role: oam + vnf_id: {get_param: vnf_id} + vnf_name: {get_param: vnf_name} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + networks: + - port: { get_resource: oam_internal_0_port_0 } + - port: { get_resource: oam_oam_0_port_1 } + block_device_mapping: + - device_name: vdb + volume_id: { get_param: oam_volume_id_0 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + DN=$dn_name + DUName=$du_name + Uuid=$uuid + SwRepoIp=$swrepo_ip + CmRepoIp=$cmrepo_ip + OamDnsIp=$dns_ip + eth0_MTU=$mtu + UniqueId=$dn_name/$du_name/$release/$uuid + OamNetmask=$oam_netmask + OamIp=$oam_ip + OamCipa=$oam_cipa_ip + NodeCipa=$node_cipa_ip + Gateway=$gateway + OamGateway=$gateway + NodeIp=$node_ip + Netmask=$netmask + NodeType=OAM + DUType=CSCF + Release=$release + SwRepoPort=5571 + CmRepoPort=8051 + LbGroupId=1 + HaGroupId=101 + NodeName=$instance_name + params: + $dn_name: { get_param: vcscf_dn} + $du_name: { get_param: vcscf_du } + $uuid: { get_param: oam_uuid_0 } + $dns_ip: { get_param: vcscf_dns_address } + $cmrepo_ip: { get_param: vcscf_cmrepo_address } + $swrepo_ip: { get_param: vcscf_swrepo_address } + $release: { get_param: vcscf_release } + $mtu: { get_param: vcscf_internal_network_mtu } + $node_ip: { get_param: oam_internal_ip_0 } + $netmask: { get_param: vcscf_internal_netmask } + $gateway: { get_param: vcscf_default_gateway} + $oam_ip: { get_param: oam_oam_ip_0 } + $oam_netmask: { get_param: vcscf_oam_netmask } + $node_cipa_ip: { get_param: oam_internal_vip_0 } + $oam_cipa_ip: { get_param: oam_oam_vip_0 } + $instance_name: { get_param: oam_name_0 } + + + oam_internal_1_port_0: + type: OS::Neutron::Port + depends_on: + - cscf_internal_subnet_0 + properties: + name: + str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: { get_param: oam_name_1 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: oam_internal_ip_1 } + allowed_address_pairs: + - ip_address: "0.0.0.0/1" + - ip_address: "128.0.0.0/1" + - ip_address: "::/1" + - ip_address: "8000::/1" + + oam_oam_1_port_1: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: { get_param: oam_name_1 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: oam_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: oam_oam_ip_1 } + allowed_address_pairs: + - ip_address: { get_param: oam_oam_vip_0} + + + oam_server_1: + type: OS::Nova::Server + properties: + availability_zone: { get_param: availability_zone_1 } + scheduler_hints: { group: { get_resource: oam_server_group } } + name: { get_param: oam_name_1 } + flavor: { get_param: oam_flavor_name } + image: { get_param: oam_image_name } + metadata: + vm_role: oam + vnf_id: {get_param: vnf_id} + vnf_name: {get_param: vnf_name} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + networks: + - port: { get_resource: oam_internal_1_port_0 } + - port: { get_resource: oam_oam_1_port_1 } + block_device_mapping: + - device_name: vdb + volume_id: { get_param: oam_volume_id_1 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + DN=$dn_name + DUName=$du_name + Uuid=$uuid + SwRepoIp=$swrepo_ip + CmRepoIp=$cmrepo_ip + OamDnsIp=$dns_ip + eth0_MTU=$mtu + UniqueId=$dn_name/$du_name/$release/$uuid + OamNetmask=$oam_netmask + OamIp=$oam_ip + OamCipa=$oam_cipa_ip + NodeCipa=$node_cipa_ip + Gateway=$gateway + OamGateway=$gateway + NodeIp=$node_ip + Netmask=$netmask + NodeType=OAM + DUType=CSCF + Release=$release + SwRepoPort=5571 + CmRepoPort=8051 + LbGroupId=1 + HaGroupId=101 + NodeName=$instance_name + params: + $dn_name: { get_param: vcscf_dn} + $du_name: { get_param: vcscf_du } + $uuid: { get_param: oam_uuid_1 } + $dns_ip: { get_param: vcscf_dns_address } + $cmrepo_ip: { get_param: vcscf_cmrepo_address } + $swrepo_ip: { get_param: vcscf_swrepo_address } + $release: { get_param: vcscf_release } + $mtu: { get_param: vcscf_internal_network_mtu } + $node_ip: { get_param: oam_internal_ip_1 } + $netmask: { get_param: vcscf_internal_netmask } + $gateway: { get_param: vcscf_default_gateway} + $oam_ip: { get_param: oam_oam_ip_1 } + $oam_netmask: { get_param: vcscf_oam_netmask } + $node_cipa_ip: { get_param: oam_internal_vip_0 } + $oam_cipa_ip: { get_param: oam_oam_vip_0 } + $instance_name: { get_param: oam_name_1 } + + oam_internal_2_port_0: + type: OS::Neutron::Port + depends_on: + - cscf_internal_subnet_0 + properties: + name: + str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: { get_param: oam_name_2 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: oam_internal_ip_2 } + allowed_address_pairs: + - ip_address: "0.0.0.0/1" + - ip_address: "128.0.0.0/1" + - ip_address: "::/1" + - ip_address: "8000::/1" + + oam_oam_2_port_1: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: { get_param: oam_name_2 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: oam_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: oam_oam_ip_2 } + allowed_address_pairs: + - ip_address: { get_param: oam_oam_vip_0} + + + oam_server_2: + type: OS::Nova::Server + properties: + availability_zone: { get_param: availability_zone_0 } + scheduler_hints: { group: { get_resource: oam_server_group } } + name: { get_param: oam_name_2 } + flavor: { get_param: oam_flavor_name } + image: { get_param: oam_image_name } + metadata: + vm_role: oam + vnf_id: {get_param: vnf_id} + vnf_name: {get_param: vnf_name} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + networks: + - port: { get_resource: oam_internal_2_port_0 } + - port: { get_resource: oam_oam_2_port_1 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + DN=$dn_name + DUName=$du_name + Uuid=$uuid + SwRepoIp=$swrepo_ip + CmRepoIp=$cmrepo_ip + OamDnsIp=$dns_ip + eth0_MTU=$mtu + UniqueId=$dn_name/$du_name/$release/$uuid + OamNetmask=$oam_netmask + OamIp=$oam_ip + OamCipa=$oam_cipa_ip + NodeCipa=$node_cipa_ip + Gateway=$gateway + OamGateway=$gateway + NodeIp=$node_ip + Netmask=$netmask + NodeType=OAM + DUType=CSCF + Release=$release + SwRepoPort=5571 + CmRepoPort=8051 + LbGroupId=1 + HaGroupId=101 + NodeName=$instance_name + params: + $dn_name: { get_param: vcscf_dn} + $du_name: { get_param: vcscf_du } + $uuid: { get_param: oam_uuid_2 } + $dns_ip: { get_param: vcscf_dns_address } + $cmrepo_ip: { get_param: vcscf_cmrepo_address } + $swrepo_ip: { get_param: vcscf_swrepo_address } + $release: { get_param: vcscf_release } + $mtu: { get_param: vcscf_internal_network_mtu } + $node_ip: { get_param: oam_internal_ip_2 } + $netmask: { get_param: vcscf_internal_netmask } + $gateway: { get_param: vcscf_default_gateway} + $oam_ip: { get_param: oam_oam_ip_2 } + $oam_netmask: { get_param: vcscf_oam_netmask } + $node_cipa_ip: { get_param: oam_internal_vip_0 } + $oam_cipa_ip: { get_param: oam_oam_vip_0 } + $instance_name: { get_param: oam_name_2 } + + + cif_internal_0_port_0: + type: OS::Neutron::Port + depends_on: + - cscf_internal_subnet_0 + properties: + name: + str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: { get_param: cif_name_0 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_internal_ip_0 } + - ip_address: { get_param: cif_internal_v6_ip_0 } + allowed_address_pairs: + - ip_address: { get_param: cif_internal_vip_0 } + + cif_oam_0_port_1: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: { get_param: cif_name_0 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: oam_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_oam_ip_0 } + allowed_address_pairs: + - ip_address: { get_param: cif_oam_vip_0} + + cif_ims_core_0_port_2: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth2 + params: + $PREFIX: { get_param: cif_name_0 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: ims_core_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_ims_core_v6_ip_0 } + allowed_address_pairs: + - ip_address: { get_param: cif_ims_core_v6_vip_0} + + + cif_oam_0_port_3: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth3 + params: + $PREFIX: { get_param: cif_name_0 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: oam_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_oam_ip_2 } + allowed_address_pairs: + - ip_address: { get_param: cif_oam_vip_1} + + + cif_ims_li_0_port_4: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth4 + params: + $PREFIX: { get_param: cif_name_0 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: ims_li_v6_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_ims_li_v6_ip_0 } + allowed_address_pairs: + - ip_address: { get_param: cif_ims_li_v6_vip_0} + + cif_server_0: + type: OS::Nova::Server + properties: + availability_zone: { get_param: availability_zone_0 } + scheduler_hints: { group: { get_resource: cif_server_group } } + name: { get_param: cif_name_0 } + flavor: { get_param: cif_flavor_name } + image: { get_param: cif_image_name } + metadata: + vnf_id: {get_param: vnf_id} + vm_role: cif + vnf_name: {get_param: vnf_name} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + networks: + - port: { get_resource: cif_internal_0_port_0 } + - port: { get_resource: cif_oam_0_port_1 } + - port: { get_resource: cif_ims_core_0_port_2 } + - port: { get_resource: cif_oam_0_port_3 } + - port: { get_resource: cif_ims_li_0_port_4 } + block_device_mapping: + - device_name: vdb + volume_id: { get_param: cif_volume_id_0 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + DN=$dn_name + DUName=$du_name + Uuid=$uuid + SwRepoIp=$swrepo_ip + CmRepoIp=$cmrepo_ip + OamDnsIp=$dns_ip + eth0_MTU=$mtu + UniqueId=$dn_name/$du_name/$release/$uuid + OAMUnitInternalIp=$oam_unit_ip + NodeIp=$node_ip + Netmask=$netmask + Gateway=$oam_unit_ip + NodeType=CIF + DUType=CSCF + Release=$release + SwRepoPort=5571 + CmRepoPort=8051 + LbGroupId=1 + HaGroupId=1 + NodeName=$instance_name + params: + $dn_name: { get_param: vcscf_dn} + $du_name: { get_param: vcscf_du } + $cmrepo_ip: { get_param: vcscf_cmrepo_address } + $swrepo_ip: { get_param: vcscf_swrepo_address } + $oam_unit_ip: { get_param: oam_internal_vip_0 } + $netmask: { get_param: vcscf_internal_netmask } + $release: { get_param: vcscf_release } + $mtu: { get_param: vcscf_internal_network_mtu } + $dns_ip: { get_param: vcscf_dns_address } + $uuid: { get_param: cif_uuid_0 } + $node_ip: { get_param: cif_internal_ip_0 } + $instance_name: { get_param: cif_name_0 } + + cif_internal_1_port_0: + type: OS::Neutron::Port + depends_on: + - cscf_internal_subnet_0 + properties: + name: + str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: { get_param: cif_name_1 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_internal_ip_1 } + - ip_address: { get_param: cif_internal_v6_ip_1 } + allowed_address_pairs: + - ip_address: { get_param: cif_internal_vip_0 } + + + cif_oam_1_port_1: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: { get_param: cif_name_1 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: oam_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_oam_ip_1 } + allowed_address_pairs: + - ip_address: { get_param: cif_oam_vip_0} + + cif_ims_core_1_port_2: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth2 + params: + $PREFIX: { get_param: cif_name_1 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: ims_core_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_ims_core_v6_ip_1 } + allowed_address_pairs: + - ip_address: { get_param: cif_ims_core_v6_vip_0} + + cif_oam_1_port_3: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth3 + params: + $PREFIX: { get_param: cif_name_0 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: oam_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_oam_ip_3 } + allowed_address_pairs: + - ip_address: { get_param: cif_oam_vip_1} + + + cif_ims_li_1_port_4: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth4 + params: + $PREFIX: { get_param: cif_name_1 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: ims_li_v6_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cif_ims_li_v6_ip_1 } + allowed_address_pairs: + - ip_address: { get_param: cif_ims_li_v6_vip_0} + + cif_server_1: + type: OS::Nova::Server + properties: + availability_zone: { get_param: availability_zone_1 } + scheduler_hints: { group: { get_resource: cif_server_group } } + name: { get_param: cif_name_1 } + flavor: { get_param: cif_flavor_name } + image: { get_param: cif_image_name } + metadata: + vnf_id: {get_param: vnf_id} + vm_role: cif + vnf_name: {get_param: vnf_name} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + networks: + - port: { get_resource: cif_internal_1_port_0 } + - port: { get_resource: cif_oam_1_port_1 } + - port: { get_resource: cif_ims_core_1_port_2 } + - port: { get_resource: cif_oam_1_port_3 } + - port: { get_resource: cif_ims_li_1_port_4 } + block_device_mapping: + - device_name: vdb + volume_id: { get_param: cif_volume_id_1 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + DN=$dn_name + DUName=$du_name + Uuid=$uuid + SwRepoIp=$swrepo_ip + CmRepoIp=$cmrepo_ip + OamDnsIp=$dns_ip + eth0_MTU=$mtu + UniqueId=$dn_name/$du_name/$release/$uuid + OAMUnitInternalIp=$oam_unit_ip + NodeIp=$node_ip + Netmask=$netmask + Gateway=$oam_unit_ip + NodeType=CIF + DUType=CSCF + Release=$release + SwRepoPort=5571 + CmRepoPort=8051 + LbGroupId=1 + HaGroupId=1 + NodeName=$instance_name + params: + $dn_name: { get_param: vcscf_dn} + $du_name: { get_param: vcscf_du } + $cmrepo_ip: { get_param: vcscf_cmrepo_address } + $swrepo_ip: { get_param: vcscf_swrepo_address } + $oam_unit_ip: { get_param: oam_internal_vip_0 } + $netmask: { get_param: vcscf_internal_netmask } + $release: { get_param: vcscf_release } + $mtu: { get_param: vcscf_internal_network_mtu } + $dns_ip: { get_param: vcscf_dns_address } + $uuid: { get_param: cif_uuid_1 } + $node_ip: { get_param: cif_internal_ip_1 } + $instance_name: { get_param: cif_name_1 } + + lbd_internal_0_port_0: + type: OS::Neutron::Port + depends_on: + - cscf_internal_subnet_0 + properties: + name: + str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: { get_param: lbd_name_0 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: lbd_internal_ip_0 } + + lbd_dpdk_0_port_1: + type: OS::Neutron::Port + depends_on: + - cscf_internal_dpdk_subnet_0 + properties: + name: + str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: { get_param: lbd_name_0 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_dpdk_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: lbd_internal_dpdk_ip_0 } + allowed_address_pairs: + - ip_address: "0.0.0.0/1" + - ip_address: "128.0.0.0/1" + - ip_address: "::/1" + - ip_address: "8000::/1" + + lbd_ims_core_0_port_2: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth2 + params: + $PREFIX: { get_param: lbd_name_0 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: ims_core_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: lbd_ims_core_v6_ip_0 } + allowed_address_pairs: + - ip_address: { get_param: lbd_ims_core_v6_vip_0} + + lbd_server_0: + type: OS::Nova::Server + properties: + availability_zone: { get_param: availability_zone_0 } + scheduler_hints: { group: { get_resource: lbd_server_group } } + name: { get_param: lbd_name_0 } + flavor: { get_param: lbd_flavor_name } + image: { get_param: lbd_image_name } + metadata: + vnf_id: {get_param: vnf_id} + vm_role: lbd + vnf_name: {get_param: vnf_name} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + networks: + - port: { get_resource: lbd_internal_0_port_0 } + - port: { get_resource: lbd_dpdk_0_port_1 } + - port: { get_resource: lbd_ims_core_0_port_2 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + DN=$dn_name + DUName=$du_name + Uuid=$uuid + SwRepoIp=$swrepo_ip + CmRepoIp=$cmrepo_ip + OamDnsIp=$dns_ip + eth0_MTU=$mtu + eth1_MTU=$mtu + UniqueId=$dn_name/$du_name/$release/$uuid + OAMUnitInternalIp=$oam_unit_ip + NodeIp=$node_ip + Netmask=$netmask + Gateway=$oam_unit_ip + NodeType=L2TD + DUType=CSCF + Release=$release + SwRepoPort=5571 + CmRepoPort=8051 + LbGroupId=1 + HaGroupId=1 + NodeName=$instance_name + params: + $dn_name: { get_param: vcscf_dn} + $du_name: { get_param: vcscf_du } + $cmrepo_ip: { get_param: vcscf_cmrepo_address } + $swrepo_ip: { get_param: vcscf_swrepo_address } + $netmask: { get_param: vcscf_internal_netmask } + $release: { get_param: vcscf_release } + $mtu: { get_param: vcscf_internal_network_mtu } + $oam_unit_ip: { get_param: oam_internal_vip_0 } + $dns_ip: { get_param: vcscf_dns_address } + $uuid: { get_param: lbd_uuid_0 } + $node_ip: { get_param: lbd_internal_ip_0 } + $instance_name: { get_param: lbd_name_0 } + + lbd_internal_1_port_0: + type: OS::Neutron::Port + depends_on: + - cscf_internal_subnet_0 + properties: + name: + str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: { get_param: lbd_name_1 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: lbd_internal_ip_1 } + + lbd_dpdk_1_port_1: + type: OS::Neutron::Port + depends_on: + - cscf_internal_dpdk_subnet_0 + properties: + name: + str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: { get_param: lbd_name_1 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_dpdk_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: lbd_internal_dpdk_ip_1 } + allowed_address_pairs: + - ip_address: "0.0.0.0/1" + - ip_address: "128.0.0.0/1" + - ip_address: "::/1" + - ip_address: "8000::/1" + + lbd_ims_core_1_port_2: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth2 + params: + $PREFIX: { get_param: lbd_name_1 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: ims_core_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: lbd_ims_core_v6_ip_1 } + allowed_address_pairs: + - ip_address: { get_param: lbd_ims_core_v6_vip_0} + + lbd_server_1: + type: OS::Nova::Server + properties: + availability_zone: { get_param: availability_zone_1 } + scheduler_hints: { group: { get_resource: lbd_server_group } } + name: { get_param: lbd_name_1 } + flavor: { get_param: lbd_flavor_name } + image: { get_param: lbd_image_name } + metadata: + vnf_id: {get_param: vnf_id} + vm_role: lbd + vnf_name: {get_param: vnf_name} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + networks: + - port: { get_resource: lbd_internal_1_port_0 } + - port: { get_resource: lbd_dpdk_1_port_1 } + - port: { get_resource: lbd_ims_core_1_port_2 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + DN=$dn_name + DUName=$du_name + Uuid=$uuid + SwRepoIp=$swrepo_ip + CmRepoIp=$cmrepo_ip + OamDnsIp=$dns_ip + eth0_MTU=$mtu + eth1_MTU=$mtu + UniqueId=$dn_name/$du_name/$release/$uuid + OAMUnitInternalIp=$oam_unit_ip + NodeIp=$node_ip + Netmask=$netmask + Gateway=$oam_unit_ip + NodeType=L2TD + DUType=CSCF + Release=$release + SwRepoPort=5571 + CmRepoPort=8051 + LbGroupId=1 + HaGroupId=1 + NodeName=$instance_name + params: + $dn_name: { get_param: vcscf_dn} + $du_name: { get_param: vcscf_du } + $cmrepo_ip: { get_param: vcscf_cmrepo_address } + $swrepo_ip: { get_param: vcscf_swrepo_address } + $netmask: { get_param: vcscf_internal_netmask } + $release: { get_param: vcscf_release } + $mtu: { get_param: vcscf_internal_network_mtu } + $oam_unit_ip: { get_param: oam_internal_vip_0 } + $dns_ip: { get_param: vcscf_dns_address } + $uuid: { get_param: lbd_uuid_1 } + $node_ip: { get_param: lbd_internal_ip_1 } + $instance_name: { get_param: lbd_name_1 } + + cdi_internal_0_port_0: + type: OS::Neutron::Port + depends_on: + - cscf_internal_subnet_0 + - cscf_internal_subnet_v6_0 + properties: + name: + str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: { get_param: cdi_name_0 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cdi_internal_ip_0 } + - ip_address: { get_param: cdi_internal_v6_ip_0 } + allowed_address_pairs: + - ip_address: "0.0.0.0/1" + - ip_address: "128.0.0.0/1" + - ip_address: "::/1" + - ip_address: "8000::/1" + + cdi_ims_core_0_port_1: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: { get_param: cdi_name_0 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: ims_core_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips : + - ip_address: { get_param: cdi_ims_core_v6_ip_0 } + allowed_address_pairs: + - ip_address: { get_param: cdi_ims_core_v6_vip_0} + + cdi_server_0: + type: OS::Nova::Server + properties: + availability_zone: { get_param: availability_zone_0 } + scheduler_hints: { group: { get_resource: cdi_server_group } } + name: { get_param: cdi_name_0 } + flavor: { get_param: cdi_flavor_name } + image: { get_param: cdi_image_name } + metadata: + vnf_id: {get_param: vnf_id} + vm_role: cdi + vnf_name: {get_param: vnf_name} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + networks: + - port: { get_resource: cdi_internal_0_port_0 } + - port: { get_resource: cdi_ims_core_0_port_1 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + DN=$dn_name + DUName=$du_name + Uuid=$uuid + SwRepoIp=$swrepo_ip + CmRepoIp=$cmrepo_ip + OamDnsIp=$dns_ip + eth0_MTU=$mtu + UniqueId=$dn_name/$du_name/$release/$uuid + OAMUnitInternalIp=$oam_unit_ip + NodeIp=$node_ip + Netmask=$netmask + Gateway=$oam_unit_ip + NodeType=CDI + DUType=CSCF + Release=$release + SwRepoPort=5571 + CmRepoPort=8051 + LbGroupId=1 + HaGroupId=1 + NodeName=$instance_name + params: + $dn_name: { get_param: vcscf_dn} + $du_name: { get_param: vcscf_du } + $dns_ip: { get_param: vcscf_dns_address } + $cmrepo_ip: { get_param: vcscf_cmrepo_address } + $swrepo_ip: { get_param: vcscf_swrepo_address } + $oam_unit_ip: { get_param: oam_internal_vip_0 } + $netmask: { get_param: vcscf_internal_netmask } + $release: { get_param: vcscf_release } + $mtu: { get_param: vcscf_internal_network_mtu } + $node_ip: { get_param: cdi_internal_ip_0 } + $uuid: { get_param: cdi_uuid_0 } + $instance_name: { get_param: cdi_name_0 } + + cdi_internal_1_port_0: + type: OS::Neutron::Port + depends_on: + - cscf_internal_subnet_0 + - cscf_internal_subnet_v6_0 + properties: + name: + str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: { get_param: cdi_name_1 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_resource: cscf_internal_network_0 } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips: + - ip_address: { get_param: cdi_internal_ip_1 } + - ip_address: { get_param: cdi_internal_v6_ip_1 } + allowed_address_pairs: + - ip_address: "0.0.0.0/1" + - ip_address: "128.0.0.0/1" + - ip_address: "::/1" + - ip_address: "8000::/1" + + cdi_ims_core_1_port_1: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: { get_param: cdi_name_1 } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: ims_core_net_id } + security_groups: + - { get_resource: cscf_RSG } + fixed_ips : + - ip_address: { get_param: cdi_ims_core_v6_ip_1 } + allowed_address_pairs: + - ip_address: { get_param: cdi_ims_core_v6_vip_0} + + cdi_server_1: + type: OS::Nova::Server + properties: + availability_zone: { get_param: availability_zone_1 } + scheduler_hints: { group: { get_resource: cdi_server_group } } + name: { get_param: cdi_name_1 } + flavor: { get_param: cdi_flavor_name } + image: { get_param: cdi_image_name } + metadata: + vnf_id: {get_param: vnf_id} + vm_role: cdi + vnf_name: {get_param: vnf_name} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + networks: + - port: { get_resource: cdi_internal_1_port_0 } + - port: { get_resource: cdi_ims_core_1_port_1 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + DN=$dn_name + DUName=$du_name + Uuid=$uuid + SwRepoIp=$swrepo_ip + CmRepoIp=$cmrepo_ip + OamDnsIp=$dns_ip + eth0_MTU=$mtu + UniqueId=$dn_name/$du_name/$release/$uuid + OAMUnitInternalIp=$oam_unit_ip + NodeIp=$node_ip + Netmask=$netmask + Gateway=$oam_unit_ip + NodeType=CDI + DUType=CSCF + Release=$release + SwRepoPort=5571 + CmRepoPort=8051 + LbGroupId=1 + HaGroupId=1 + NodeName=$instance_name + params: + $dn_name: { get_param: vcscf_dn} + $du_name: { get_param: vcscf_du } + $dns_ip: { get_param: vcscf_dns_address } + $cmrepo_ip: { get_param: vcscf_cmrepo_address } + $swrepo_ip: { get_param: vcscf_swrepo_address } + $oam_unit_ip: { get_param: oam_internal_vip_0 } + $netmask: { get_param: vcscf_internal_netmask } + $release: { get_param: vcscf_release } + $mtu: { get_param: vcscf_internal_network_mtu } + $node_ip: { get_param: cdi_internal_ip_1 } + $uuid: { get_param: cdi_uuid_1 } + $instance_name: { get_param: cdi_name_1 } + + tdcore_zone_0_RRG: + type: OS::Heat::ResourceGroup + depends_on: + - cscf_internal_subnet_0 + - cscf_internal_dpdk_subnet_0 + properties: + count: { get_param: tdcore_zone_0_count } + index_var: $INDEX + resource_def: + type: nested_tdcore.yaml + properties: + index: $INDEX + tdcore_server_group: { get_resource: tdcore_zone_0_server_group } + vnf_name: { get_param: vnf_name } + vcscf_name_delimeter: { get_param: vcscf_name_delimeter } + tdcore_flavor_name: { get_param: tdcore_flavor_name } + tdcore_image_name: { get_param: tdcore_image_name } + tdcore_security_group: { get_resource: cscf_RSG } + internal_net_id: { get_resource: cscf_internal_network_0 } + internal_dpdk_net_id: { get_resource: cscf_internal_dpdk_network_0 } + vcscf_dn: { get_param: vcscf_dn} + vcscf_du: { get_param: vcscf_du } + vcscf_cmrepo_address: { get_param: vcscf_cmrepo_address } + vcscf_swrepo_address: { get_param: vcscf_swrepo_address } + vcscf_gateway: { get_param: oam_internal_vip_0 } + vcscf_internal_netmask: { get_param: vcscf_internal_netmask } + vcscf_release: { get_param: vcscf_release } + vcscf_dns_address: { get_param: vcscf_dns_address } + vcscf_internal_network_mtu: { get_param: vcscf_internal_network_mtu } + vnf_id: {get_param: vnf_id} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + availability_zone_0: { get_param: availability_zone_0 } + tdcore_internal_ips: { get_param: tdcore_internal_zone_0_ips } + tdcore_dpdk_ips: { get_param: tdcore_dpdk_zone_0_ips } + tdcore_names: { get_param: tdcore_zone_0_names } + tdcore_uuids: { get_param: tdcore_zone_0_uuids } + + tdcore_zone_1_RRG: + type: OS::Heat::ResourceGroup + depends_on: + - cscf_internal_subnet_0 + - cscf_internal_dpdk_subnet_0 + properties: + count: { get_param: tdcore_zone_1_count } + index_var: $INDEX + resource_def: + type: nested_tdcore.yaml + properties: + index: $INDEX + tdcore_server_group: { get_resource: tdcore_zone_1_server_group } + vnf_name: { get_param: vnf_name } + vcscf_name_delimeter: { get_param: vcscf_name_delimeter } + tdcore_flavor_name: { get_param: tdcore_flavor_name } + tdcore_image_name: { get_param: tdcore_image_name } + tdcore_security_group: { get_resource: cscf_RSG } + internal_net_id: { get_resource: cscf_internal_network_0 } + internal_dpdk_net_id: { get_resource: cscf_internal_dpdk_network_0 } + vcscf_dn: { get_param: vcscf_dn} + vcscf_du: { get_param: vcscf_du } + vcscf_cmrepo_address: { get_param: vcscf_cmrepo_address } + vcscf_swrepo_address: { get_param: vcscf_swrepo_address } + vcscf_gateway: { get_param: oam_internal_vip_0 } + vcscf_internal_netmask: { get_param: vcscf_internal_netmask } + vcscf_release: { get_param: vcscf_release } + vcscf_dns_address: { get_param: vcscf_dns_address } + vcscf_internal_network_mtu: { get_param: vcscf_internal_network_mtu } + vnf_id: {get_param: vnf_id} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + availability_zone_0: { get_param: availability_zone_1 } + tdcore_internal_ips: { get_param: tdcore_internal_zone_1_ips } + tdcore_dpdk_ips: { get_param: tdcore_dpdk_zone_1_ips } + tdcore_names: { get_param: tdcore_zone_1_names } + tdcore_uuids: { get_param: tdcore_zone_1_uuids } + + cscf_zone_0_RRG: + type: OS::Heat::ResourceGroup + depends_on: + - cscf_internal_subnet_0 + - cscf_internal_subnet_v6_0 + properties: + count: { get_param: cscf_zone_0_count } + index_var: $INDEX + resource_def: + type: nested_cscf.yaml + properties: + index: $INDEX + vnf_name: { get_param: vnf_name } + vcscf_name_delimeter: { get_param: vcscf_name_delimeter } + cscf_flavor_name: { get_param: cscf_flavor_name } + cscf_image_name: { get_param: cscf_image_name } + cscf_security_group: { get_resource: cscf_RSG } + internal_net_id: { get_resource: cscf_internal_network_0 } + vcscf_dn: { get_param: vcscf_dn} + vcscf_du: { get_param: vcscf_du } + vcscf_cmrepo_address: { get_param: vcscf_cmrepo_address } + vcscf_swrepo_address: { get_param: vcscf_swrepo_address } + vcscf_gateway: { get_param: oam_internal_vip_0 } + vcscf_internal_netmask: { get_param: vcscf_internal_netmask } + vcscf_release: { get_param: vcscf_release } + vcscf_dns_address: { get_param: vcscf_dns_address } + vcscf_internal_network_mtu: { get_param: vcscf_internal_network_mtu } + vnf_id: {get_param: vnf_id} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + availability_zone_0 : { get_param: availability_zone_0 } + cscf_internal_ips: { get_param: cscf_internal_zone_0_ips } + cscf_internal_v6_ips: { get_param: cscf_internal_zone_0_v6_ips } + cscf_names: { get_param: cscf_zone_0_names } + cscf_uuids: { get_param: cscf_zone_0_uuids } + + cscf_zone_1_RRG: + type: OS::Heat::ResourceGroup + depends_on: + - cscf_internal_subnet_0 + - cscf_internal_subnet_v6_0 + properties: + count: { get_param: cscf_zone_1_count } + index_var: $INDEX + resource_def: + type: nested_cscf.yaml + properties: + index: $INDEX + vnf_name: { get_param: vnf_name } + vcscf_name_delimeter: { get_param: vcscf_name_delimeter } + cscf_flavor_name: { get_param: cscf_flavor_name } + cscf_image_name: { get_param: cscf_image_name } + cscf_security_group: { get_resource: cscf_RSG } + internal_net_id: { get_resource: cscf_internal_network_0 } + vcscf_dn: { get_param: vcscf_dn} + vcscf_du: { get_param: vcscf_du } + vcscf_cmrepo_address: { get_param: vcscf_cmrepo_address } + vcscf_swrepo_address: { get_param: vcscf_swrepo_address } + vcscf_gateway: { get_param: oam_internal_vip_0 } + vcscf_internal_netmask: { get_param: vcscf_internal_netmask } + vcscf_release: { get_param: vcscf_release } + vcscf_dns_address: { get_param: vcscf_dns_address } + vcscf_internal_network_mtu: { get_param: vcscf_internal_network_mtu } + vnf_id: {get_param: vnf_id} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + cscf_internal_ips: { get_param: cscf_internal_zone_1_ips } + cscf_internal_v6_ips: { get_param: cscf_internal_zone_1_v6_ips } + cscf_names: { get_param: cscf_zone_1_names } + cscf_uuids: { get_param: cscf_zone_1_uuids } + availability_zone_0 : { get_param: availability_zone_1 } + +outputs: + internal_net_id: + description: internal network + value: {get_resource: cscf_internal_network_0} + + internal_dpdk_net_id: + description: dpdk network + value: {get_resource: cscf_internal_dpdk_network_0} + + cscf_security_group: + description: cscf security group + value: {get_resource: cscf_RSG} + + tdcore_zone_0_server_group: + description: tdcore zone 0 server group name/id + value: {get_resource: tdcore_zone_0_server_group} + + tdcore_zone_1_server_group: + description: tdcore zone 1 server group name/id + value: {get_resource: tdcore_zone_1_server_group} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf_volume.env b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf_volume.env new file mode 100644 index 0000000000..68c2dd1831 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf_volume.env @@ -0,0 +1,19 @@ +## Copyright:: Nokia Corporation 2017 +## Note: Nokia VM HOT file for CFX +## Name: "base_cscf_volume.env" +## Date: 20 Mar 2017 +## Kilo Version +parameters: + +# PSEUDO CONSTANTS +# ----------------------------------------------------------------------------- + cif_volume_size_0: 300 + oam_volume_size_0: 300 + vcscf_name_delimeter: "_" + +# SITE SPECIFIC +# ----------------------------------------------------------------------------- +# vnf_name: CSCF0001 + # storage availability zones +# availability_zone_0: zone1 +# availability_zone_1: zone2 diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf_volume.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf_volume.yaml new file mode 100644 index 0000000000..cf0bd8b612 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/base_cscf_volume.yaml @@ -0,0 +1,105 @@ +## Copyright:: Nokia Corporation 2017 +## Note: Nokia VM HOT file for CFX +## Name: "base_cscf_volume.yaml" +## Date: 20 Mar 2017 +## Kilo Version +heat_template_version: 2015-04-30 + +description: Volume template for CFX + +parameters: + vnf_name: + type: string + description: Unique name for this VF instance + + vcscf_name_delimeter: + type: string + description: 'delimeter used in concatenating different words while naming (ex: "-","_",".",...)' + constraints: + - allowed_values: [ '-', '', '_', '.'] + + availability_zone_0: + type: string + description: Storage availability zone for volume of first vm + + availability_zone_1: + type: string + description: Storage availability zone for volume of second vm + + cif_volume_size_0: + type: number + description: Size of Volume for cif VMs + constraints: + - range: { min: 1, max: 300 } + + oam_volume_size_0: + type: number + description: Size of Volume for oam VMs + constraints: + - range: { min: 1, max: 300 } + +resources: + cif_volume_0: + type: OS::Cinder::Volume + properties: + size: { get_param: cif_volume_size_0 } + availability_zone: { get_param: availability_zone_0} + name: + str_replace: + template: "$VNF$DELcif$DELvolume$DEL0" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + + cif_volume_1: + type: OS::Cinder::Volume + properties: + availability_zone: { get_param: availability_zone_1} + size: { get_param: cif_volume_size_0 } + name: + str_replace: + template: "$VNF$DELcif$DELvolume$DEL1" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + + oam_volume_0: + type: OS::Cinder::Volume + properties: + size: { get_param: oam_volume_size_0 } + availability_zone: { get_param: availability_zone_0} + name: + str_replace: + template: "$VNF$DELoam$DELvolume$DEL0" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + + oam_volume_1: + type: OS::Cinder::Volume + properties: + size: { get_param: oam_volume_size_0 } + availability_zone: { get_param: availability_zone_1} + name: + str_replace: + template: "$VNF$DELoam$DELvolume$DEL1" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + +outputs: + cif_volume_id_0: + description: volume id for first cif + value: {get_resource: cif_volume_0} + + cif_volume_id_1: + description: volume id for second cif + value: {get_resource: cif_volume_1} + + oam_volume_id_0: + description: volume id for first oam + value: {get_resource: oam_volume_0} + + oam_volume_id_1: + description: volume id for second oam + value: {get_resource: oam_volume_1} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/nested_cscf.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/nested_cscf.yaml new file mode 100644 index 0000000000..f911be6c11 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/nested_cscf.yaml @@ -0,0 +1,183 @@ +## Copyright:: Nokia Corporation 2017 +## Note: Nokia VM HOT file for CFX +## Name: "cscf.yaml" +## Date: 20 Mar 2017 +## Kilo Version +heat_template_version: 2015-04-30 + +description: IMS CSCF + +parameters: + + vcscf_name_delimeter: + type: string + description: 'delimeter used in concatenating different words while naming (ex: "-","_",".",...)' + constraints: + - allowed_values: [ '-', '', '_', '.'] + + vnf_name: + type: string + description: Unique name for this VF instance + + vnf_id: + type: string + description: Unique ID for this VF instance + + vf_module_name: + type: string + description: Unique name for this VF Module instance + + vf_module_id: + type: string + description: Unique ID for this VF Module instance + + cscf_security_group: + type: string + description: security group + + cscf_flavor_name: + type: string + description: flavor name + + cscf_image_name: + type: string + description: image name + + internal_net_id: + type: string + description: internal network name/uuid + + vcscf_internal_netmask: + type: string + description: internal netmask + + vcscf_release: + type: string + description: "IMS release" + + vcscf_dn: + type: string + description: "DN name" + + vcscf_du: + type: string + description: "DU name" + + vcscf_cmrepo_address: + type: string + description: "CMRepo IP or FQDN" + + vcscf_swrepo_address: + type: string + description: SWRepo IP or FQDN + + vcscf_dns_address: + type: string + description: DNS server IP + + vcscf_internal_network_mtu: + type: number + description: MTU for internal network interface (eth0) + constraints: + - range: { min: 1000, max: 9100 } + + vcscf_gateway: + type: string + description: OAM unit cipa ip + + cscf_internal_ips: + type: comma_delimited_list + description: "List of Internal Lan IPs for CSCF instances" + + cscf_internal_v6_ips: + type: comma_delimited_list + description: "List of Internal Lan v6 IPs for CSCF instances" + + cscf_names: + type: comma_delimited_list + description: "List of instance names for CSCF instances" + + cscf_uuids: + type: comma_delimited_list + description: "List of UUIDs generated by cmrepo for CSCF instances" + + availability_zone_0: + type: string + description: Availability zone name for CSCF instances. + + index: + type: number + description: index + constraints: + - range: { min: 0, max: 119 } + +resources: + + cscf_internal_0_port_0: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: { get_param: [ cscf_names, { get_param: index } ] } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: internal_net_id } + security_groups: + - { get_param: cscf_security_group } + fixed_ips: + - ip_address: { get_param: [ cscf_internal_ips, { get_param: index } ] } + - ip_address: { get_param: [ cscf_internal_v6_ips, { get_param: index } ] } + + cscf_server_0: + type: OS::Nova::Server + properties: + availability_zone: { get_param: availability_zone_0 } + name: { get_param: [ cscf_names, { get_param: index } ] } + flavor: { get_param: cscf_flavor_name } + image: { get_param: cscf_image_name } + metadata: + vnf_id: {get_param: vnf_id} + vm_role: cscf + vnf_name: {get_param: vnf_name} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + networks: + - port: { get_resource: cscf_internal_0_port_0 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + DN=$dn_name + DUName=$du_name + Uuid=$uuid + SwRepoIp=$swrepo_ip + CmRepoIp=$cmrepo_ip + OamDnsIp=$dns_ip + eth0_MTU=$mtu + UniqueId=$dn_name/$du_name/$release/$uuid + OAMUnitInternalIp=$oam_unit_ip + NodeIp=$node_ip + Netmask=$netmask + Gateway=$oam_unit_ip + NodeType=CSCF + DUType=CSCF + Release=$release + SwRepoPort=5571 + CmRepoPort=8051 + LbGroupId=1 + NodeName=$instance_name + params: + $dn_name: { get_param: vcscf_dn } + $du_name: { get_param: vcscf_du } + $uuid: { get_param: [ cscf_uuids, { get_param: index } ] } + $dns_ip: { get_param: vcscf_dns_address } + $cmrepo_ip: { get_param: vcscf_cmrepo_address } + $swrepo_ip: { get_param: vcscf_swrepo_address } + $oam_unit_ip: { get_param: vcscf_gateway } + $netmask: { get_param: vcscf_internal_netmask } + $release: { get_param: vcscf_release } + $mtu: { get_param: vcscf_internal_network_mtu } + $node_ip: { get_param: [ cscf_internal_ips, { get_param: index } ] } + $instance_name: { get_param: [ cscf_names, { get_param: index } ] } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/nested_tdcore.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/nested_tdcore.yaml new file mode 100644 index 0000000000..2baec50a38 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/in/nested_tdcore.yaml @@ -0,0 +1,213 @@ +## Copyright:: Nokia Corporation 2017 +## Note: Nokia VM HOT file for CFX +## Name: "tdcore.yaml" +## Date: 20 Mar 2017 +## Kilo Version +heat_template_version: 2015-04-30 + +description: IMS TDCORE VM + +parameters: + + vcscf_name_delimeter: + type: string + description: 'delimeter used in concatenating different words while naming (ex: "-","_",".",...)' + constraints: + - allowed_values: [ '-', '', '_', '.'] + + vnf_name: + type: string + description: Unique name for this VF instance + + vnf_id: + type: string + description: Unique ID for this VF instance + + vf_module_name: + type: string + description: Unique name for this VF Module instance + + vf_module_id: + type: string + description: Unique ID for this VF Module instance + + tdcore_security_group: + type: string + description: security group + + tdcore_flavor_name: + type: string + description: flavor name + + tdcore_image_name: + type: string + description: image name + + internal_net_id: + type: string + description: internal network name/uuid + + internal_dpdk_net_id: + type: string + description: internal dpdk network name/uuid + + vcscf_internal_netmask: + type: string + description: internal netmask + + vcscf_release: + type: string + description: "IMS release" + + vcscf_dn: + type: string + description: "DN name" + + vcscf_du: + type: string + description: "DU name" + + vcscf_cmrepo_address: + type: string + description: "CMRepo IP or FQDN" + + vcscf_swrepo_address: + type: string + description: SWRepo IP or FQDN + + vcscf_dns_address: + type: string + description: DNS server IP + + vcscf_internal_network_mtu: + type: number + description: MTU for internal network interface (eth0) + constraints: + - range: { min: 1000, max: 9100 } + + vcscf_gateway: + type: string + description: OAM unit virtual ip + + tdcore_names: + type: comma_delimited_list + description: "List of instance names for TDCORE instances" + + tdcore_internal_ips: + type: comma_delimited_list + description: "List of Internal Lan IPs for TDCORE instances" + + tdcore_dpdk_ips: + type: comma_delimited_list + description: "List of DPDK Lan IPs for TDCORE instances" + + tdcore_uuids: + type: comma_delimited_list + description: "List of UUIDs generated by cmrepo for TDCORE instances" + + availability_zone_0: + type: string + description: Availability zone name. + + tdcore_server_group: + type: string + description: server group name/id + + index: + type: number + description: index + constraints: + - range: { min: 0, max: 7 } + +resources: + + tdcore_internal_0_port_0: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: { get_param: [ tdcore_names, { get_param: index } ] } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: internal_net_id } + security_groups: + - { get_param: tdcore_security_group } + fixed_ips: + - ip_address: { get_param: [ tdcore_internal_ips, { get_param: index } ] } + + tdcore_dpdk_0_port_1: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: { get_param: [ tdcore_names, { get_param: index } ] } + $DEL: { get_param: vcscf_name_delimeter } + network: { get_param: internal_dpdk_net_id } + security_groups: + - { get_param: tdcore_security_group } + fixed_ips: + - ip_address: { get_param: [ tdcore_dpdk_ips, { get_param: index } ] } + allowed_address_pairs: + - ip_address: "0.0.0.0/1" + - ip_address: "128.0.0.0/1" + - ip_address: "::/1" + - ip_address: "8000::/1" + + tdcore_server_0: + type: OS::Nova::Server + properties: + availability_zone: { get_param: availability_zone_0 } + scheduler_hints: { group: { get_param: tdcore_server_group } } + name: { get_param: [ tdcore_names, { get_param: index } ] } + flavor: { get_param: tdcore_flavor_name } + image: { get_param: tdcore_image_name } + metadata: + vnf_id: {get_param: vnf_id} + vm_role: tdcore + vnf_name: {get_param: vnf_name} + vf_module_id: {get_param: vf_module_id} + vf_module_name: {get_param: vf_module_name} + networks: + - port: { get_resource: tdcore_internal_0_port_0 } + - port: { get_resource: tdcore_dpdk_0_port_1 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + DN=$dn_name + DUName=$du_name + Uuid=$uuid + SwRepoIp=$swrepo_ip + CmRepoIp=$cmrepo_ip + OamDnsIp=$dns_ip + eth0_MTU=$mtu + eth1_MTU=$mtu + UniqueId=$dn_name/$du_name/$release/$uuid + OAMUnitInternalIp=$oam_unit_ip + NodeIp=$node_ip + Netmask=$netmask + Gateway=$oam_unit_ip + NodeType=TD_Core + DUType=CSCF + Release=$release + SwRepoPort=5571 + CmRepoPort=8051 + LbGroupId=1 + NodeName=$instance_name + params: + $dn_name: { get_param: vcscf_dn } + $du_name: { get_param: vcscf_du } + $uuid: { get_param: [ tdcore_uuids, { get_param: index } ] } + $dns_ip: { get_param: vcscf_dns_address } + $cmrepo_ip: { get_param: vcscf_cmrepo_address } + $swrepo_ip: { get_param: vcscf_swrepo_address } + $oam_unit_ip: { get_param: vcscf_gateway } + $netmask: { get_param: vcscf_internal_netmask } + $release: { get_param: vcscf_release } + $mtu: { get_param: vcscf_internal_network_mtu } + $node_ip: { get_param: [ tdcore_internal_ips, { get_param: index } ] } + $instance_name: { get_param: [ tdcore_names, { get_param: index } ] } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/out/GlobalSubstitutionTypesServiceTemplate.yaml new file mode 100644 index 0000000000..e92abe8fd5 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -0,0 +1,6627 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +metadata: + template_name: GlobalSubstitutionTypes +imports: +- openecomp_heat_index: + file: openecomp-heat/_index.yml +node_types: + org.openecomp.resource.abstract.nodes.jsa: + derived_from: org.openecomp.resource.abstract.nodes.VFC + properties: + compute_jsa_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_image_name: + type: string + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + requirements: + - dependency_jsa: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_jsa: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + capabilities: + instance_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_jsa: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_jsa: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + feature_jsa: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + cpu_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu.delta_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_jsa: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.allocation_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_jsa: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_jsa: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_jsa: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.abstract.nodes.heat.cmaui: + derived_from: org.openecomp.resource.abstract.nodes.VFC + properties: + cmaui_names: + type: list + description: CMAUI1, CMAUI2 server names + required: true + status: SUPPORTED + entry_schema: + type: string + p1: + type: string + description: UID of OAM network + required: true + status: SUPPORTED + port_cmaui_port_8_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + p2: + type: string + required: true + status: SUPPORTED + port_cmaui_port_8_order: + type: integer + required: true + status: SUPPORTED + port_cmaui_port_7_network_role_tag: + type: string + required: true + status: SUPPORTED + availability_zone_0: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + net: + type: string + required: true + status: SUPPORTED + port_cmaui_port_8_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_cmaui_port_7_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + security_group_name: + type: list + description: CMAUI1, CMAUI2 server names + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_8_network_role_tag: + type: string + required: true + status: SUPPORTED + port_cmaui_port_8_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_cmaui_port_7_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_cmaui_port_7_order: + type: integer + required: true + status: SUPPORTED + cmaui_image: + type: string + description: Image for CMAUI server + required: true + status: SUPPORTED + cmaui_flavor: + type: string + description: Flavor for CMAUI server + required: true + status: SUPPORTED + port_cmaui_port_7_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_cmaui_port_7_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_cmaui_port_7_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_cmaui_port_7_network_role: + type: string + required: true + status: SUPPORTED + port_cmaui_port_8_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + cmaui_oam_ips: + type: string + required: true + status: SUPPORTED + port_cmaui_port_8_network_role: + type: string + required: true + status: SUPPORTED + port_cmaui_port_8_subnetpoolid: + type: string + required: true + status: SUPPORTED + requirements: + - dependency_cmaui_port_7: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_7: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui_port_8: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_8: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_cmaui: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_cmaui: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + capabilities: + cpu.delta_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_7: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_8: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + scalable_server_cmaui: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_cmaui: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_8: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_7: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_8: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_7: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_7: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_8: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_cmaui: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_cmaui: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_7: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_8: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_7: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_8: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_7: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_cmaui: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_7: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_8: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_7: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_8: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_8: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.allocation_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_7: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_8: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_server_cmaui: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_7: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_8: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.abstract.nodes.cmaui: + derived_from: org.openecomp.resource.abstract.nodes.VFC + properties: + port_cmaui_port_6_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_cmaui_port_6_network_role_tag: + type: string + required: true + status: SUPPORTED + port_cmaui_port_5_order: + type: integer + required: true + status: SUPPORTED + port_cmaui_port_5_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_cmaui_port_6_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + compute_cmaui_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_cmaui_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_image_name: + type: string + required: true + status: SUPPORTED + port_cmaui_port_6_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_6_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_cmaui_port_6_order: + type: integer + required: true + status: SUPPORTED + port_cmaui_port_5_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_cmaui_port_5_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_cmaui_port_6_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_cmaui_port_5_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_cmaui_port_6_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_cmaui_port_5_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_cmaui_port_5_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_6_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_5_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_cmaui_port_5_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_cmaui_port_5_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_cmaui_port_6_network_role: + type: string + required: true + status: SUPPORTED + port_cmaui_port_5_network_role: + type: string + required: true + status: SUPPORTED + port_cmaui_port_6_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_cmaui_port_5_network_role_tag: + type: string + required: true + status: SUPPORTED + port_cmaui_port_6_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + requirements: + - dependency_cmaui_cmaui_port_5: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_cmaui_port_5: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui_cmaui_port_6: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_cmaui_port_6: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_cmaui: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + capabilities: + disk.read.bytes.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_cmaui: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_cmaui: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_cmaui_port_5: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_cmaui_port_6: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + feature_cmaui_cmaui_port_6: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_cmaui_port_5: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + cpu.delta_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_cmaui: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_cmaui_port_6: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_cmaui_port_5: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + binding_cmaui: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + endpoint_cmaui: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.cmaui: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_cmaui_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + port_cmaui_port_2_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_cmaui_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_cmaui_port_1_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + vm_flavor_name: + type: string + required: true + status: SUPPORTED + compute_cmaui_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_2_network_role: + type: string + required: true + status: SUPPORTED + port_cmaui_port_1_order: + type: integer + required: true + status: SUPPORTED + compute_cmaui_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_1_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_cmaui_port_1_network_role: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_cmaui_port_2_network_role_tag: + type: string + required: true + status: SUPPORTED + port_cmaui_port_2_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_cmaui_port_2_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_cmaui_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_cmaui_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_cmaui_port_2_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_cmaui_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_cmaui_port_1_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_2_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_cmaui_port_2_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_cmaui_port_2_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_cmaui_port_2_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_2_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_cmaui_port_2_order: + type: integer + required: true + status: SUPPORTED + port_cmaui_port_1_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + org.openecomp.resource.abstract.nodes.cmaui_1: + derived_from: org.openecomp.resource.abstract.nodes.VFC + properties: + port_cmaui_port_3_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_cmaui_port_3_order: + type: integer + required: true + status: SUPPORTED + port_cmaui_port_3_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + compute_cmaui_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_4_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_cmaui_port_4_subnetpoolid: + type: string + required: true + status: SUPPORTED + compute_cmaui_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_4_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + vm_image_name: + type: string + required: true + status: SUPPORTED + port_cmaui_port_3_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_cmaui_port_3_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_cmaui_port_3_network_role_tag: + type: string + required: true + status: SUPPORTED + port_cmaui_port_4_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_cmaui_port_4_order: + type: integer + required: true + status: SUPPORTED + port_cmaui_port_3_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_4_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_cmaui_port_3_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_cmaui_port_3_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_cmaui_port_4_network_role_tag: + type: string + required: true + status: SUPPORTED + port_cmaui_port_4_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_3_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_4_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_4_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_cmaui_port_3_network_role: + type: string + required: true + status: SUPPORTED + port_cmaui_port_4_network_role: + type: string + required: true + status: SUPPORTED + port_cmaui_port_3_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_cmaui_port_4_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + requirements: + - dependency_cmaui_cmaui_port_4: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_cmaui_port_4: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui_cmaui_port_3: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_cmaui_port_3: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_cmaui: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + capabilities: + disk.read.bytes.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_cmaui: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_cmaui: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_cmaui_port_3: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + feature_cmaui_cmaui_port_3: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_cmaui_port_4: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_cmaui_port_4: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + cpu.delta_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_cmaui: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_cmaui_port_3: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_cmaui_port_4: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + binding_cmaui: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + endpoint_cmaui: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.abstract.nodes.heat.nested1: + derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute + properties: + cmaui_names: + type: list + description: CMAUI1, CMAUI2 server names + required: true + status: SUPPORTED + entry_schema: + type: string + p1: + type: string + description: UID of OAM network + required: true + status: SUPPORTED + p2: + type: string + description: UID of OAM network + required: true + status: SUPPORTED + cmaui_image: + type: string + description: Image for CMAUI server + required: true + status: SUPPORTED + cmaui_flavor: + type: string + description: Flavor for CMAUI server + required: true + status: SUPPORTED + security_group_name: + type: list + description: CMAUI1, CMAUI2 server names + required: true + status: SUPPORTED + entry_schema: + type: string + availability_zone_0: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + cmaui_oam_ips: + type: string + required: true + status: SUPPORTED + net: + type: string + required: true + status: SUPPORTED + requirements: + - dependency_cmaui_port_2: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_2: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_cmaui: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_cmaui: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_test_nested2Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - dependency_cmaui_port_3_test_nested2Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_3_test_nested2Level: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui_port_4_test_nested2Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_4_test_nested2Level: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - dependency_test_nested4Level_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - dependency_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_cmaui_port_5_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_5_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui_port_6_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_6_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_cmaui_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_cmaui_test_nested3Level_test_nested2Level: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_server_cmaui_test_nested2Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_cmaui_test_nested2Level: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_cmaui_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + capabilities: + os_server_cmaui_test_nested2Level: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_6_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_6_test_nested3Level_test_nested2Level: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.ephemeral.size_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_cmaui: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_cmaui_test_nested2Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_server_cmaui_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_5_test_nested3Level_test_nested2Level: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.device.write.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_3_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.root.size_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_6_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_4_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_3_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_6_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_5_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_cmaui: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + os_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_4_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + instance_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_5_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_6_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_cmaui: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_cmaui_port_2: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_server_cmaui_test_nested3Level_test_nested2Level: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + feature_test_nested2Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + memory.usage_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_cmaui_test_nested3Level_test_nested2Level: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_5_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_5_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_2: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_cmaui: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_4_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_server_cmaui_test_nested2Level: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_5_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_4_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_3_test_nested2Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_5_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_3_test_nested2Level: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + binding_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + vcpus_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_cmaui_test_nested2Level: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_5_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_cmaui: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_cmaui_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_3_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_4_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_5_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_6_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_3_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_cmaui_test_nested2Level: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_6_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_4_test_nested2Level: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.device.read.bytes.rate_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_4_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_test_nested4Level_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_4_test_nested2Level: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + memory.usage_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_5_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_4_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_cmaui_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + memory_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_8_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_2: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_3_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_3_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_6_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_cmaui_test_nested2Level: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_4_test_nested2Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_6_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_5_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_7_test_nested4Level_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + host_server_cmaui_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_4_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_3_test_nested2Level: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.device.write.requests_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_6_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_cmaui_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_6_test_nested3Level_test_nested2Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_3_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_3_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_server_cmaui: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_cmaui_test_nested4Level_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_cmaui_test_nested3Level_test_nested2Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.abstract.nodes.cmaui_2: + derived_from: org.openecomp.resource.abstract.nodes.VFC + properties: + port_cmaui_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + port_cmaui_port_2_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_cmaui_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_cmaui_port_1_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + vm_flavor_name: + type: string + required: true + status: SUPPORTED + compute_cmaui_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_2_network_role: + type: string + required: true + status: SUPPORTED + port_cmaui_port_1_order: + type: integer + required: true + status: SUPPORTED + compute_cmaui_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_1_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_cmaui_port_1_network_role: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_cmaui_port_2_network_role_tag: + type: string + required: true + status: SUPPORTED + port_cmaui_port_2_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_cmaui_port_2_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_cmaui_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_cmaui_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_cmaui_port_2_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_cmaui_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_cmaui_port_1_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_2_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_cmaui_port_2_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_cmaui_port_2_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_cmaui_port_2_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_cmaui_port_2_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_cmaui_port_2_order: + type: integer + required: true + status: SUPPORTED + port_cmaui_port_1_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + requirements: + - dependency_cmaui_cmaui_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_cmaui_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui_cmaui_port_2: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_cmaui_port_2: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_cmaui: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + capabilities: + network.incoming.bytes_cmaui_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_cmaui: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_cmaui_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_cmaui_port_2: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + scalable_cmaui: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_cmaui_port_2: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_cmaui_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.device.write.bytes.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu.delta_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_cmaui: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_cmaui_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_cmaui_port_2: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + binding_cmaui: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + endpoint_cmaui: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_cmaui_port_2: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_cmaui_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.abstract.nodes.heat.nested2: + derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute + properties: + cmaui_names: + type: list + description: CMAUI1, CMAUI2 server names + required: true + status: SUPPORTED + entry_schema: + type: string + p1: + type: string + description: UID of OAM network + required: true + status: SUPPORTED + p2: + type: string + description: UID of OAM network + required: true + status: SUPPORTED + cmaui_image: + type: string + description: Image for CMAUI server + required: true + status: SUPPORTED + cmaui_flavor: + type: string + description: Flavor for CMAUI server + required: true + status: SUPPORTED + security_group_name: + type: list + description: CMAUI1, CMAUI2 server names + required: true + status: SUPPORTED + entry_schema: + type: string + availability_zone_0: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + cmaui_oam_ips: + type: string + required: true + status: SUPPORTED + net: + type: string + required: true + status: SUPPORTED + requirements: + - dependency_cmaui_port_3: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_3: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui_port_4: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_4: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_test_nested3Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - dependency_test_nested4Level_test_nested3Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - dependency_cmaui_port_7_test_nested4Level_test_nested3Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_7_test_nested4Level_test_nested3Level: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui_port_8_test_nested4Level_test_nested3Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_8_test_nested4Level_test_nested3Level: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_cmaui_test_nested4Level_test_nested3Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_cmaui_test_nested4Level_test_nested3Level: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_cmaui_port_5_test_nested3Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_5_test_nested3Level: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui_port_6_test_nested3Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_6_test_nested3Level: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_cmaui_test_nested3Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_cmaui_test_nested3Level: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_server_cmaui: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_cmaui: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + capabilities: + cpu.delta_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_cmaui: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_7_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_cmaui: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_cmaui_test_nested3Level: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_test_nested4Level_test_nested3Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_8_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_cmaui_test_nested3Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_7_test_nested4Level_test_nested3Level: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + memory.usage_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_cmaui_test_nested3Level: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_5_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_cmaui: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_6_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_7_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_6_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_5_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_6_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_8_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_server_cmaui_test_nested4Level_test_nested3Level: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_6_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_cmaui: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_3: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.device.read.bytes.rate_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_4: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.device.write.requests_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_server_cmaui_test_nested3Level: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_6_test_nested3Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_8_test_nested4Level_test_nested3Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_6_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_6_test_nested3Level: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.iops_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_8_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_8_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_7_test_nested4Level_test_nested3Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + cpu_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_3: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_4: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_6_test_nested3Level: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_6_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_3: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_4: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_cmaui_test_nested4Level_test_nested3Level: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_5_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_cmaui_test_nested4Level_test_nested3Level: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_7_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_8_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_7_test_nested4Level_test_nested3Level: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.root.size_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_6_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_8_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_cmaui: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_5_test_nested3Level: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_cmaui_test_nested4Level_test_nested3Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + binding_server_cmaui_test_nested4Level_test_nested3Level: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_7_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_cmaui_test_nested3Level: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + scalable_server_cmaui_test_nested4Level_test_nested3Level: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_5_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_8_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_test_nested3Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_8_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_8_test_nested4Level_test_nested3Level: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_7_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_5_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_7_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_6_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_7_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_5_test_nested3Level: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_5_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_3: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_4: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_7_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_8_test_nested4Level_test_nested3Level: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + scalable_server_cmaui_test_nested3Level: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + endpoint_server_cmaui: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_5_test_nested3Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_5_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_cmaui_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_5_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_cmaui_test_nested4Level_test_nested3Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.abstract.nodes.heat.nested3: + derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute + properties: + cmaui_names: + type: list + description: CMAUI1, CMAUI2 server names + required: true + status: SUPPORTED + entry_schema: + type: string + p1: + type: string + description: UID of OAM network + required: true + status: SUPPORTED + p2: + type: string + required: true + status: SUPPORTED + cmaui_image: + type: string + description: Image for CMAUI server + required: true + status: SUPPORTED + cmaui_flavor: + type: string + description: Flavor for CMAUI server + required: true + status: SUPPORTED + indx: + type: float + required: true + status: SUPPORTED + security_group_name: + type: list + description: CMAUI1, CMAUI2 server names + required: true + status: SUPPORTED + entry_schema: + type: string + availability_zone_0: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + cmaui_oam_ips: + type: string + required: true + status: SUPPORTED + net: + type: string + required: true + status: SUPPORTED + requirements: + - dependency_test_nested4Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - dependency_cmaui_port_7_test_nested4Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_7_test_nested4Level: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui_port_8_test_nested4Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_8_test_nested4Level: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_cmaui_test_nested4Level: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_cmaui_test_nested4Level: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_cmaui_port_5: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_5: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_cmaui_port_6: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_cmaui_port_6: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_cmaui: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_cmaui: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + capabilities: + cpu.delta_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_cmaui: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_cmaui: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_7_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_8_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_cmaui_test_nested4Level: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + os_server_cmaui: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_7_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_7_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_cmaui_test_nested4Level: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_8_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_cmaui: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_5: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + network.incoming.packets_cmaui_port_8_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_6: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_8_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_cmaui_test_nested4Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_cmaui_test_nested4Level: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_8_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_8_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_5: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_6: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_7_test_nested4Level: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_8_test_nested4Level: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_6: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_7_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_5: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_8_test_nested4Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_7_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_cmaui_port_8_test_nested4Level: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_cmaui_port_8_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_cmaui_port_7_test_nested4Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + endpoint_server_cmaui_test_nested4Level: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_cmaui_port_7_test_nested4Level: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_server_cmaui: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_7_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_cmaui_port_7_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_test_nested4Level: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + os_server_cmaui_test_nested4Level: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_cmaui_port_8_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_cmaui_port_6: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_cmaui_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_cmaui_port_5: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_cmaui: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_cmaui_port_7_test_nested4Level: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_server_cmaui: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.jsa: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_jsa_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_image_name: + type: string + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/out/MainServiceTemplate.yaml new file mode 100644 index 0000000000..e89a0c772d --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/myTest/out/MainServiceTemplate.yaml @@ -0,0 +1,3172 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +metadata: + template_name: Main +imports: +- openecomp_heat_index: + file: openecomp-heat/_index.yml +- GlobalSubstitutionTypes: + file: GlobalSubstitutionTypesServiceTemplate.yaml +topology_template: + inputs: + cif_internal_ip_0: + hidden: false + immutable: false + type: string + description: Internal IP of CIF01 instance + default: 192.168.210.1 + vcscf_release: + hidden: false + immutable: false + type: string + description: IMS release + default: '17.0' + cif_name_1: + hidden: false + immutable: false + type: string + description: CIF02 instance name + cif_name_0: + hidden: false + immutable: false + type: string + description: CIF01 instance name + cif_internal_ip_1: + hidden: false + immutable: false + type: string + description: Internal IP of CIF02 instance + default: 192.168.210.2 + tdcore_zone_0_count: + hidden: false + immutable: false + type: float + description: | + Number of TD Core VMs to be deployed zone 0. This parameter is used to scale the TD Core instances. + default: 4 + constraints: + - in_range: + - 0 + - 8 + lbd_internal_dpdk_vip_0: + hidden: false + immutable: false + type: string + description: Internal DPDK CIP IP of LBD + default: 192.168.211.181 + lbd_ims_core_v6_vip_0: + hidden: false + immutable: false + type: string + description: IMS CORE CIPA v6 IP of LBD + cscf_zone_1_count: + hidden: false + immutable: false + type: float + description: | + Number of CSCF to be deployed on zone 1. This parameter is used to scale the cscf instances. + default: 18 + constraints: + - in_range: + - 0 + - 120 + oam_internal_vip_0: + hidden: false + immutable: false + type: string + description: Internal CIPA IP of OAM unit + default: 192.168.210.3 + cscf_image_name: + hidden: false + immutable: false + type: string + description: CSCF server VM image name + default: IMS_17_0_OPENSTACK_CSCF_1701400.000 + cif_internal_vip_0: + hidden: false + immutable: false + type: string + description: Internal CIPA IP of CIF + default: 192.168.210.150 + cif_ims_core_v6_ip_0: + hidden: false + immutable: false + type: string + description: IMS CORE v6 IP of CIF01 instance + cif_ims_core_v6_ip_1: + hidden: false + immutable: false + type: string + description: IMS CORE v6 IP of CIF02 instance + oam_volume_id_1: + hidden: false + immutable: false + type: string + description: size of the cinder volume used for oam + oam_volume_size_0: + hidden: false + immutable: false + type: float + description: Size of Volume for oam VMs + default: 300 + constraints: + - in_range: + - 1 + - 300 + oam_volume_id_0: + hidden: false + immutable: false + type: string + description: size of the cinder volume used for oam + vcscf_oam_netmask: + hidden: false + immutable: false + type: string + description: Netmask for OAM LAN + tdcore_zone_1_names: + hidden: false + immutable: false + type: list + description: List of instance names for TDCORE instances on zone 1 + entry_schema: + type: string + cif_flavor_name: + hidden: false + immutable: false + type: string + description: CSCF CIF VM flavor + default: ND.c4r16d38 + vcscf_dns_address: + hidden: false + immutable: false + type: string + description: DNS server IP + vcscf_internal_network_cidr: + hidden: false + immutable: false + type: string + description: CIDR for for Internal LAN + default: 192.168.210.0/24 + cdi_ims_core_v6_ip_1: + hidden: false + immutable: false + type: string + description: IMS CORE LAN v6 IP of CDI02 instance + cdi_ims_core_v6_ip_0: + hidden: false + immutable: false + type: string + description: IMS CORE LAN v6 IP of CDI01 instance + cdi_flavor_name: + hidden: false + immutable: false + type: string + description: CDI VM flavor + default: ND.c4r8d38 + vcscf_default_gateway: + hidden: false + immutable: false + type: string + description: Default gateway for OAM LAN + tdcore_zone_0_uuids: + hidden: false + immutable: false + type: list + description: List of UUIDs generated by cmrepo for TDCORE instances on zone 0 + entry_schema: + type: string + oam_name_1: + hidden: false + immutable: false + type: string + description: OAM02 instance name + oam_name_0: + hidden: false + immutable: false + type: string + description: OAM01 instance name + oam_name_2: + hidden: false + immutable: false + type: string + description: OAM03 instance name + cscf_zone_1_uuids: + hidden: false + immutable: false + type: list + description: List of UUIDs generated by cmrepo for CSCF instances on zone 1 + entry_schema: + type: string + vf_module_id: + hidden: false + immutable: false + type: string + description: Unique ID for this VF Module instance + oam_oam_ip_0: + hidden: false + immutable: false + type: string + description: OAM IP of OAM01 instance + cscf_internal_zone_1_ips: + hidden: false + immutable: false + type: list + description: List of Internal Lan IPs for CSCF instances on zone 1 + default: + - 192.168.210.17 + - 192.168.210.19 + - 192.168.210.21 + - 192.168.210.23 + - 192.168.210.25 + - 192.168.210.27 + - 192.168.210.29 + - 192.168.210.31 + - 192.168.210.33 + - 192.168.210.35 + - 192.168.210.37 + - 192.168.210.39 + - 192.168.210.41 + - 192.168.210.43 + - 192.168.210.45 + - 192.168.210.47 + - 192.168.210.49 + - 192.168.210.51 + entry_schema: + type: string + cif_ims_li_v6_vip_0: + hidden: false + immutable: false + type: string + description: IMS LI CIPA v6 IP of CIF + oam_oam_ip_1: + hidden: false + immutable: false + type: string + description: OAM IP of OAM02 instance + oam_oam_ip_2: + hidden: false + immutable: false + type: string + description: OAM IP of OAM03 instance + vnf_name: + hidden: false + immutable: false + type: string + description: Unique name for this VF instance + lbd_flavor_name: + hidden: false + immutable: false + type: string + description: CSCF LBD VM flavor + default: ND.c4r16d38 + cscf_zone_0_uuids: + hidden: false + immutable: false + type: list + description: List of UUIDs generated by cmrepo for CSCF instances on zone 0 + entry_schema: + type: string + vf_module_name: + hidden: false + immutable: false + type: string + description: Unique name for this VF Module instance + cdi_internal_ip_0: + hidden: false + immutable: false + type: string + description: Internal IP of CDI01 instance + default: 192.168.210.139 + cscf_zone_0_names: + hidden: false + immutable: false + type: list + description: List of instance names for CSCF instances on zone 0 + entry_schema: + type: string + oam_oam_vip_0: + hidden: false + immutable: false + type: string + description: OAM CIPA IP of OAM unit + vcscf_swrepo_address: + hidden: false + immutable: false + type: string + description: SWRepo IP or FQDN + cdi_internal_ip_1: + hidden: false + immutable: false + type: string + description: Internal IP of CDI02 instance + default: 192.168.210.140 + cdi_name_1: + hidden: false + immutable: false + type: string + description: CDI02 instance name + availability_zone_0: + hidden: false + immutable: false + type: string + description: Storage availability zone for volume of first vm + availability_zone_1: + hidden: false + immutable: false + type: string + description: Storage availability zone for volume of second vm + tdcore_image_name: + hidden: false + immutable: false + type: string + description: TDCORE VM image name + default: IMS_17_0_OPENSTACK_CSCF_1701400.000 + tdcore_flavor_name: + hidden: false + immutable: false + type: string + description: TDCORE VM flavor + default: ND.c4r16d38 + cscf_flavor_name: + hidden: false + immutable: false + type: string + description: CSCF server VM flavor + default: ND.c8r16d38 + vcscf_cmrepo_address: + hidden: false + immutable: false + type: string + description: CMRepo IP or FQDN + cdi_name_0: + hidden: false + immutable: false + type: string + description: CDI01 instance name + lbd_ims_core_v6_ip_0: + hidden: false + immutable: false + type: string + description: IMS CORE v6 IP of LBD01 instance + lbd_ims_core_v6_ip_1: + hidden: false + immutable: false + type: string + description: IMS CORE v6 IP of LBD02 instance + tdcore_internal_zone_1_ips: + hidden: false + immutable: false + type: list + description: List of Internal Lan IPs for TDCORE instances on zone 1 + default: + - 192.168.210.9 + - 192.168.210.11 + - 192.168.210.13 + - 192.168.210.15 + entry_schema: + type: string + oam_net_id: + hidden: false + immutable: false + type: string + description: Name/UUID of OAM network + cdi_internal_v6_vip_0: + hidden: false + immutable: false + type: string + description: Internal v6 CIPA IP of CDI + default: 2a00:9a00:a000:1190:0:1:1:2b8d + tdcore_dpdk_zone_1_ips: + hidden: false + immutable: false + type: list + description: List of DPDK Lan IPs for TDCORE instances on zone 1 + default: + - 192.168.211.9 + - 192.168.211.11 + - 192.168.211.13 + - 192.168.211.15 + entry_schema: + type: string + oam_internal_ip_0: + hidden: false + immutable: false + type: string + description: Internal IP of OAM01 instance + default: 192.168.210.136 + oam_internal_ip_1: + hidden: false + immutable: false + type: string + description: Internal IP of OAM01 instance + default: 192.168.210.137 + cscf_zone_0_count: + hidden: false + immutable: false + type: float + description: | + Number of CSCF to be deployed on zone 0. This parameter is used to scale the cscf instances. + default: 19 + constraints: + - in_range: + - 0 + - 120 + oam_internal_ip_2: + hidden: false + immutable: false + type: string + description: Internal IP of OAM01 instance + default: 192.168.210.138 + cscf_zone_1_names: + hidden: false + immutable: false + type: list + description: List of instance names for CSCF instances on zone 1 + entry_schema: + type: string + tdcore_zone_0_names: + hidden: false + immutable: false + type: list + description: List of instance names for TDCORE instances on zone 0 + entry_schema: + type: string + lbd_uuid_0: + hidden: false + immutable: false + type: string + description: UUID generated by cmrepo for LBD01 + lbd_uuid_1: + hidden: false + immutable: false + type: string + description: UUID generated by cmrepo for LBD02 + cdi_internal_v6_ip_1: + hidden: false + immutable: false + type: string + description: Internal v6 IP of CDI02 instance + default: 2a00:9a00:a000:1190:0:1:1:2b8c + cdi_internal_v6_ip_0: + hidden: false + immutable: false + type: string + description: Internal v6 IP of CDI01 instance + default: 2a00:9a00:a000:1190:0:1:1:2b8b + cdi_uuid_1: + hidden: false + immutable: false + type: string + description: UUID generated by cmrepo for CDI02 + ims_core_net_id: + hidden: false + immutable: false + type: string + description: Name/UUID of Core network + cdi_uuid_0: + hidden: false + immutable: false + type: string + description: UUID generated by cmrepo for CDI01 + vcscf_internal_network_v6_cidr: + hidden: false + immutable: false + type: string + description: CIDR for for Internal LAN v6 + default: 2a00:9a00:a000:1190:0:1:1:2b00/120 + oam_image_name: + hidden: false + immutable: false + type: string + description: OAM VM image name + default: IMS_17_0_OPENSTACK_OAM_1701400.000 + tdcore_zone_1_uuids: + hidden: false + immutable: false + type: list + description: List of UUIDs generated by cmrepo for TDCORE instances on zone 1 + entry_schema: + type: string + vcscf_internal_network_mtu: + hidden: false + immutable: false + type: float + description: MTU for internal network interface (eth0) + default: 1500 + constraints: + - in_range: + - 1000 + - 9100 + vcscf_internal_dpdk_network_cidr: + hidden: false + immutable: false + type: string + description: CIDR for for Internal LAN DPDK + default: 192.168.211.0/24 + tdcore_zone_1_count: + hidden: false + immutable: false + type: float + description: | + Number of TD Core VMs to be deployed zone 1. This parameter is used to scale the TD Core instances. + default: 4 + constraints: + - in_range: + - 0 + - 8 + cif_volume_size_0: + hidden: false + immutable: false + type: float + description: Size of Volume for cif VMs + default: 300 + constraints: + - in_range: + - 1 + - 300 + oam_flavor_name: + hidden: false + immutable: false + type: string + description: OAM VM flavor + default: ND.c4r32d30 + ims_li_v6_net_id: + hidden: false + immutable: false + type: string + description: Name/UUID of V6 LI network + lbd_internal_dpdk_ip_1: + hidden: false + immutable: false + type: string + description: Internal DPDK IP of LBD02 instance + default: 192.168.211.2 + cif_ims_core_v6_vip_0: + hidden: false + immutable: false + type: string + description: IMS CORE v6 CIPA IP of CIF + lbd_internal_dpdk_ip_0: + hidden: false + immutable: false + type: string + description: Internal DPDK IP of LBD01 instance + default: 192.168.211.1 + cdi_image_name: + hidden: false + immutable: false + type: string + description: CDI VM image name + default: IMS_17_0_OPENSTACK_CSCF_1701400.000 + oam_uuid_2: + hidden: false + immutable: false + type: string + description: UUID generated by cmrepo for OAM03 + oam_uuid_1: + hidden: false + immutable: false + type: string + description: UUID generated by cmrepo for OAM02 + oam_uuid_0: + hidden: false + immutable: false + type: string + description: UUID generated by cmrepo for OAM01 + cif_oam_vip_0: + hidden: false + immutable: false + type: string + description: OAM CIPA IP of CIF + cif_internal_v6_ip_1: + hidden: false + immutable: false + type: string + description: Internal IP v6 of CIF02 instance + default: 2a00:9a00:a000:1190:0:1:1:2b05 + vnf_id: + hidden: false + immutable: false + type: string + description: Unique ID for this VF instance + cscf_internal_zone_0_v6_ips: + hidden: false + immutable: false + type: list + description: List of Internal Lan v6 IPs for CSCF instances on zone 0 + default: + - 2a00:9a00:a000:1190:0:1:1:2b10 + - 2a00:9a00:a000:1190:0:1:1:2b12 + - 2a00:9a00:a000:1190:0:1:1:2b14 + - 2a00:9a00:a000:1190:0:1:1:2b16 + - 2a00:9a00:a000:1190:0:1:1:2b18 + - 2a00:9a00:a000:1190:0:1:1:2b1a + - 2a00:9a00:a000:1190:0:1:1:2b1c + - 2a00:9a00:a000:1190:0:1:1:2b1e + - 2a00:9a00:a000:1190:0:1:1:2b20 + - 2a00:9a00:a000:1190:0:1:1:2b22 + - 2a00:9a00:a000:1190:0:1:1:2b24 + - 2a00:9a00:a000:1190:0:1:1:2b26 + - 2a00:9a00:a000:1190:0:1:1:2b28 + - 2a00:9a00:a000:1190:0:1:1:2b2a + - 2a00:9a00:a000:1190:0:1:1:2b2c + - 2a00:9a00:a000:1190:0:1:1:2b2e + - 2a00:9a00:a000:1190:0:1:1:2b30 + - 2a00:9a00:a000:1190:0:1:1:2b32 + - 2a00:9a00:a000:1190:0:1:1:2b34 + entry_schema: + type: string + cscf_internal_zone_1_v6_ips: + hidden: false + immutable: false + type: list + description: List of Internal Lan v6 IPs for CSCF instances on zone 1 + default: + - 2a00:9a00:a000:1190:0:1:1:2b11 + - 2a00:9a00:a000:1190:0:1:1:2b13 + - 2a00:9a00:a000:1190:0:1:1:2b15 + - 2a00:9a00:a000:1190:0:1:1:2b17 + - 2a00:9a00:a000:1190:0:1:1:2b19 + - 2a00:9a00:a000:1190:0:1:1:2b1b + - 2a00:9a00:a000:1190:0:1:1:2b1d + - 2a00:9a00:a000:1190:0:1:1:2b1f + - 2a00:9a00:a000:1190:0:1:1:2b21 + - 2a00:9a00:a000:1190:0:1:1:2b23 + - 2a00:9a00:a000:1190:0:1:1:2b25 + - 2a00:9a00:a000:1190:0:1:1:2b27 + - 2a00:9a00:a000:1190:0:1:1:2b29 + - 2a00:9a00:a000:1190:0:1:1:2b2b + - 2a00:9a00:a000:1190:0:1:1:2b2d + - 2a00:9a00:a000:1190:0:1:1:2b2f + - 2a00:9a00:a000:1190:0:1:1:2b31 + - 2a00:9a00:a000:1190:0:1:1:2b33 + entry_schema: + type: string + cif_internal_v6_ip_0: + hidden: false + immutable: false + type: string + description: Internal IP v6 of CIF01 instance + default: 2a00:9a00:a000:1190:0:1:1:2b04 + lbd_internal_ip_1: + hidden: false + immutable: false + type: string + description: Internal IP of LBD02 instance + default: 192.168.210.5 + cif_oam_vip_1: + hidden: false + immutable: false + type: string + description: OAM (LI-X1) v4 CIPA of CIF + lbd_internal_ip_0: + hidden: false + immutable: false + type: string + description: Internal IP of LBD01 instance + default: 192.168.210.4 + cif_volume_id_0: + hidden: false + immutable: false + type: string + description: size of the cinder volume used for cif + cif_ims_li_v6_ip_0: + hidden: false + immutable: false + type: string + description: IMS LI v6 IP of CIF01 instance + cif_volume_id_1: + hidden: false + immutable: false + type: string + description: size of the cinder volume used for cif + cif_ims_li_v6_ip_1: + hidden: false + immutable: false + type: string + description: IMS LI v6 IP of CIF02 instance + lbd_image_name: + hidden: false + immutable: false + type: string + description: CSCF LBD VM image name + default: IMS_17_0_OPENSTACK_CSCF_1701400.000 + tdcore_dpdk_zone_0_ips: + hidden: false + immutable: false + type: list + description: List of DPDK Lan IPs for TDCORE instances on zone 0 + default: + - 192.168.211.8 + - 192.168.211.10 + - 192.168.211.12 + - 192.168.211.14 + entry_schema: + type: string + cif_uuid_0: + hidden: false + immutable: false + type: string + description: UUID generated by cmrepo for CIF01 + cif_uuid_1: + hidden: false + immutable: false + type: string + description: UUID generated by cmrepo for CIF02 + cif_oam_ip_0: + hidden: false + immutable: false + type: string + description: OAM IP of CIF01 instance + cif_image_name: + hidden: false + immutable: false + type: string + description: CSCF CIF VM image name + default: IMS_17_0_OPENSTACK_CSCF_1701400.000 + vcscf_internal_netmask: + hidden: false + immutable: false + type: string + description: Netmask for Internal LAN + default: 255.255.255.0 + vcscf_name_delimeter: + hidden: false + immutable: false + type: string + description: 'delimeter used in concatenating different words while naming (ex: + "-","_",".",...)' + default: _ + constraints: + - valid_values: + - '-' + - '' + - _ + - . + cif_oam_ip_3: + hidden: false + immutable: false + type: string + description: OAM (LI-X1) v4 IP of CIF02 instance + cif_oam_ip_2: + hidden: false + immutable: false + type: string + description: OAM (LI-X1) v4 IP of CIF01 instance + cif_oam_ip_1: + hidden: false + immutable: false + type: string + description: OAM IP of CIF02 instance + cdi_ims_core_v6_vip_0: + hidden: false + immutable: false + type: string + description: IMS CORE LAN CIPA v6 IP of CDI + vcscf_dn: + hidden: false + immutable: false + type: string + description: DN name + vcscf_du: + hidden: false + immutable: false + type: string + description: DU name + cscf_internal_zone_0_ips: + hidden: false + immutable: false + type: list + description: List of Internal Lan IPs for CSCF instances on zone 0 + default: + - 192.168.210.16 + - 192.168.210.18 + - 192.168.210.20 + - 192.168.210.22 + - 192.168.210.24 + - 192.168.210.26 + - 192.168.210.28 + - 192.168.210.30 + - 192.168.210.32 + - 192.168.210.34 + - 192.168.210.36 + - 192.168.210.38 + - 192.168.210.40 + - 192.168.210.42 + - 192.168.210.44 + - 192.168.210.46 + - 192.168.210.48 + - 192.168.210.50 + - 192.168.210.52 + entry_schema: + type: string + tdcore_internal_zone_0_ips: + hidden: false + immutable: false + type: list + description: List of Internal Lan IPs for TDCORE instances on zone 0 + default: + - 192.168.210.8 + - 192.168.210.10 + - 192.168.210.12 + - 192.168.210.14 + entry_schema: + type: string + lbd_name_1: + hidden: false + immutable: false + type: string + description: LBD02 instance name + lbd_name_0: + hidden: false + immutable: false + type: string + description: LBD01 instance name + node_templates: + cscf_RSG: + type: org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules + properties: + name: + str_replace: + template: $VNF$DELsecurity$DELgroup + params: + $DEL: + get_input: vcscf_name_delimeter + $VNF: + get_input: vnf_name + description: Allow all + rules: + - ethertype: IPv4 + direction: ingress + - ethertype: IPv4 + direction: egress + - ethertype: IPv6 + direction: ingress + - ethertype: IPv6 + direction: egress + requirements: + - port: + capability: tosca.capabilities.Attachment + node: cif_internal_vip_0_port + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: tosca.capabilities.Attachment + node: cif_oam_vip_1_port + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: tosca.capabilities.Attachment + node: cif_ims_core_v6_vip_2_port + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: tosca.capabilities.Attachment + node: cif_oam_vip_3_port + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: tosca.capabilities.Attachment + node: cif_ims_li_v6_vip_4_port + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: tosca.capabilities.Attachment + node: lbd_internal_dpdk_vip_1_port + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: tosca.capabilities.Attachment + node: lbd_ims_core_v6_vip_2_port + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: tosca.capabilities.Attachment + node: cdi_internal_v6_vip_0_port + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: tosca.capabilities.Attachment + node: cdi_ims_core_v6_vip_1_port + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: tosca.capabilities.Attachment + node: oam_internal_vip_0_port + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: tosca.capabilities.Attachment + node: oam_oam_vip_1_port + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_oam_oam_internal_0_port + node: abstract_oam + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_oam_oam_oam_0_port + node: abstract_oam + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_oam_oam_internal_1_port + node: abstract_oam_1 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_oam_oam_oam_1_port + node: abstract_oam_1 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_oam_oam_internal_2_port + node: abstract_oam_2 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_oam_oam_oam_2_port + node: abstract_oam_2 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cif_cif_internal_0_port + node: abstract_cif + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cif_cif_oam_0_port_1 + node: abstract_cif + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cif_cif_ims_core_0_port + node: abstract_cif + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cif_cif_oam_0_port_3 + node: abstract_cif + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cif_cif_ims_li_0_port + node: abstract_cif + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cif_cif_internal_1_port + node: abstract_cif_1 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cif_cif_oam_1_port_1 + node: abstract_cif_1 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cif_cif_ims_core_1_port + node: abstract_cif_1 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cif_cif_oam_1_port_3 + node: abstract_cif_1 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cif_cif_ims_li_1_port + node: abstract_cif_1 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_lbd_lbd_internal_0_port + node: abstract_lbd_1 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_lbd_lbd_dpdk_0_port + node: abstract_lbd_1 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_lbd_lbd_ims_core_0_port + node: abstract_lbd_1 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_lbd_lbd_internal_1_port + node: abstract_lbd + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_lbd_lbd_dpdk_1_port + node: abstract_lbd + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_lbd_lbd_ims_core_1_port + node: abstract_lbd + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cdi_cdi_internal_0_port + node: abstract_cdi + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cdi_cdi_ims_core_0_port + node: abstract_cdi + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cdi_cdi_internal_1_port + node: abstract_cdi_1 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cdi_cdi_ims_core_1_port + node: abstract_cdi_1 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_tdcore_internal_0_port_0 + node: tdcore_zone_0_RRG + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_tdcore_dpdk_0_port_1 + node: tdcore_zone_0_RRG + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_tdcore_internal_0_port_0 + node: tdcore_zone_1_RRG + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_tdcore_dpdk_0_port_1 + node: tdcore_zone_1_RRG + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cscf_internal_0_port_0 + node: cscf_zone_0_RRG + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_cscf_internal_0_port_0 + node: cscf_zone_1_RRG + relationship: org.openecomp.relationships.AttachesTo + cdi_internal_v6_vip_0_port: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + properties: + ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + security_groups: + - cscf_RSG + fixed_ips: + - ip_address: + get_input: cdi_internal_v6_vip_0 + mac_requirements: + mac_count_required: + is_required: false + name: + str_replace: + template: $NAME$DELcdi$DELinternal$DELvip$DELv6 + params: + $NAME: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + network: cscf_internal_network_0 + requirements: + - link: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + cscf_internal_dpdk_network_0: + type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net + properties: + dhcp_enabled: false + shared: false + admin_state_up: true + network_name: + str_replace: + template: $PREFIX$DELinternal$DELdpdk$DELnetwork + params: + $PREFIX: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + subnets: + cscf_internal_dpdk_subnet_0: + enable_dhcp: false + name: + str_replace: + template: $PREFIX$DELinternal$DELdpdk$DELsubnet + params: + $PREFIX: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + cidr: + get_input: vcscf_internal_dpdk_network_cidr + cif_ims_core_v6_vip_2_port: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + properties: + ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + security_groups: + - cscf_RSG + fixed_ips: + - ip_address: + get_input: cif_ims_core_v6_vip_0 + mac_requirements: + mac_count_required: + is_required: false + name: + str_replace: + template: $NAME$DELcif$DELims$DELcore$DELvip$DELv6 + params: + $NAME: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + network_role_tag: ims_core + network: + get_input: ims_core_net_id + abstract_cdi_1: + type: org.openecomp.resource.abstract.nodes.cdi_1 + directives: + - substitutable + properties: + port_cdi_ims_core_1_port_security_groups: + - - cscf_RSG + vm_flavor_name: + get_input: cdi_flavor_name + port_cdi_internal_1_port_security_groups: + - - cscf_RSG + port_cdi_ims_core_1_port_mac_requirements: + mac_count_required: + is_required: false + vm_image_name: + get_input: cdi_image_name + compute_cdi_scheduler_hints: + - group: cdi_server_group_group + port_cdi_ims_core_1_port_fixed_ips: + - ip_address: + get_input: cdi_ims_core_v6_ip_1 + compute_cdi_name: + - get_input: cdi_name_1 + port_cdi_ims_core_1_port_network_role_tag: ims_core + port_cdi_ims_core_1_port_name: + - str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: + get_input: cdi_name_1 + $DEL: + get_input: vcscf_name_delimeter + compute_cdi_user_data_format: + - RAW + port_cdi_ims_core_1_port_network: + - get_input: ims_core_net_id + compute_cdi_availability_zone: + - get_input: availability_zone_1 + port_cdi_internal_1_port_network: + - cscf_internal_network_0 + port_cdi_ims_core_1_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_cdi_internal_1_port_allowed_address_pairs: + - ip_address: 0.0.0.0/1 + - ip_address: 128.0.0.0/1 + - ip_address: ::/1 + - ip_address: 8000::/1 + compute_cdi_config_drive: + - true + port_cdi_internal_1_port_mac_requirements: + mac_count_required: + is_required: false + port_cdi_ims_core_1_port_allowed_address_pairs: + - ip_address: + get_input: cdi_ims_core_v6_vip_0 + port_cdi_internal_1_port_fixed_ips: + - ip_address: + get_input: cdi_internal_ip_1 + - ip_address: + get_input: cdi_internal_v6_ip_1 + port_cdi_internal_1_port_name: + - str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: + get_input: cdi_name_1 + $DEL: + get_input: vcscf_name_delimeter + port_cdi_internal_1_port_ip_requirements: + - ip_version: 6 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + compute_cdi_metadata: + - vf_module_id: + get_input: vf_module_id + vm_role: cdi + vnf_id: + get_input: vnf_id + vnf_name: + get_input: vnf_name + vf_module_name: + get_input: vf_module_name + service_template_filter: + substitute_service_template: Nested_cdi_1ServiceTemplate.yaml + count: 1 + index_value: + get_property: + - SELF + - service_template_filter + - index_value + vm_type_tag: cdi + nfc_naming_code: cdi + requirements: + - link_cdi_cdi_internal_1_port: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency_cdi_cdi_internal_1_port: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + cif_internal_vip_0_port: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + properties: + ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + security_groups: + - cscf_RSG + fixed_ips: + - ip_address: + get_input: cif_internal_vip_0 + mac_requirements: + mac_count_required: + is_required: false + name: + str_replace: + template: $NAME$DELcif$DELinternal$DELvip + params: + $NAME: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + network: cscf_internal_network_0 + requirements: + - link: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + cscf_zone_1_RRG: + type: org.openecomp.resource.abstract.nodes.heat.cscf + directives: + - substitutable + properties: + vf_module_id: + get_input: vf_module_id + internal_net_id: cscf_internal_network_0 + vcscf_release: + get_input: vcscf_release + cscf_internal_ips: + get_input: cscf_internal_zone_1_ips + vcscf_gateway: + get_input: oam_internal_vip_0 + vnf_name: + get_input: vnf_name + vf_module_name: + get_input: vf_module_name + cscf_image_name: + get_input: cscf_image_name + cscf_names: + get_input: cscf_zone_1_names + service_template_filter: + substitute_service_template: nested_cscfServiceTemplate.yaml + count: + get_input: cscf_zone_1_count + mandatory: false + vcscf_swrepo_address: + get_input: vcscf_swrepo_address + cscf_uuids: + get_input: cscf_zone_1_uuids + vnf_id: + get_input: vnf_id + availability_zone_0: + get_input: availability_zone_1 + cscf_internal_v6_ips: + get_input: cscf_internal_zone_1_v6_ips + cscf_flavor_name: + get_input: cscf_flavor_name + vcscf_cmrepo_address: + get_input: vcscf_cmrepo_address + vcscf_dns_address: + get_input: vcscf_dns_address + vcscf_internal_network_mtu: + get_input: vcscf_internal_network_mtu + port_cscf_internal_0_port_0_ip_requirements: + - ip_version: 6 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + index: + get_property: + - SELF + - service_template_filter + - index_value + vcscf_internal_netmask: + get_input: vcscf_internal_netmask + vcscf_name_delimeter: + get_input: vcscf_name_delimeter + port_cscf_internal_0_port_0_network_role_tag: internal + vcscf_dn: + get_input: vcscf_dn + vcscf_du: + get_input: vcscf_du + port_cscf_internal_0_port_0_mac_requirements: + mac_count_required: + is_required: false + cscf_security_group: cscf_RSG + requirements: + - link_cscf_internal_0_port_0: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + - dependency: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + oam_oam_vip_1_port: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + properties: + ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + security_groups: + - cscf_RSG + fixed_ips: + - ip_address: + get_input: oam_oam_vip_0 + mac_requirements: + mac_count_required: + is_required: false + name: + str_replace: + template: $NAME$DELoam$DELoam$DELvip + params: + $NAME: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + network_role_tag: oam + network: + get_input: oam_net_id + tdcore_zone_0_RRG: + type: org.openecomp.resource.abstract.nodes.heat.tdcore + directives: + - substitutable + properties: + vf_module_id: + get_input: vf_module_id + internal_net_id: cscf_internal_network_0 + vcscf_release: + get_input: vcscf_release + tdcore_security_group: cscf_RSG + tdcore_names: + get_input: tdcore_zone_0_names + port_tdcore_dpdk_0_port_1_network_role_tag: internal_dpdk + port_tdcore_dpdk_0_port_1_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + vcscf_gateway: + get_input: oam_internal_vip_0 + vnf_name: + get_input: vnf_name + internal_dpdk_net_id: cscf_internal_dpdk_network_0 + vf_module_name: + get_input: vf_module_name + service_template_filter: + substitute_service_template: nested_tdcoreServiceTemplate.yaml + count: + get_input: tdcore_zone_0_count + mandatory: false + vcscf_swrepo_address: + get_input: vcscf_swrepo_address + vnf_id: + get_input: vnf_id + availability_zone_0: + get_input: availability_zone_0 + port_tdcore_dpdk_0_port_1_mac_requirements: + mac_count_required: + is_required: false + tdcore_flavor_name: + get_input: tdcore_flavor_name + tdcore_image_name: + get_input: tdcore_image_name + vcscf_cmrepo_address: + get_input: vcscf_cmrepo_address + vcscf_dns_address: + get_input: vcscf_dns_address + vcscf_internal_network_mtu: + get_input: vcscf_internal_network_mtu + tdcore_server_group: tdcore_zone_0_server_group_group + index: + get_property: + - SELF + - service_template_filter + - index_value + vcscf_internal_netmask: + get_input: vcscf_internal_netmask + port_tdcore_internal_0_port_0_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + vcscf_name_delimeter: + get_input: vcscf_name_delimeter + tdcore_internal_ips: + get_input: tdcore_internal_zone_0_ips + tdcore_dpdk_ips: + get_input: tdcore_dpdk_zone_0_ips + tdcore_uuids: + get_input: tdcore_zone_0_uuids + vcscf_dn: + get_input: vcscf_dn + port_tdcore_internal_0_port_0_network_role_tag: internal + port_tdcore_internal_0_port_0_mac_requirements: + mac_count_required: + is_required: false + vcscf_du: + get_input: vcscf_du + requirements: + - link_tdcore_internal_0_port_0: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - link_tdcore_dpdk_0_port_1: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_dpdk_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + - dependency: + capability: tosca.capabilities.Node + node: cscf_internal_dpdk_network_0 + relationship: tosca.relationships.DependsOn + lbd_ims_core_v6_vip_2_port: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + properties: + ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + security_groups: + - cscf_RSG + fixed_ips: + - ip_address: + get_input: lbd_ims_core_v6_vip_0 + mac_requirements: + mac_count_required: + is_required: false + name: + str_replace: + template: $NAME$DELlbd$DELims$DELcore$DELvip$DELv6 + params: + $NAME: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + network_role_tag: ims_core + network: + get_input: ims_core_net_id + cif_oam_vip_1_port: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + properties: + ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + security_groups: + - cscf_RSG + fixed_ips: + - ip_address: + get_input: cif_oam_vip_0 + mac_requirements: + mac_count_required: + is_required: false + name: + str_replace: + template: $NAME$DELcif$DELoam$DELvip0 + params: + $NAME: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + network_role_tag: oam + network: + get_input: oam_net_id + oam_volume_0: + type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume + properties: + availability_zone: + get_input: availability_zone_0 + size: '(get_input : oam_volume_size_0) * 1024' + name: + str_replace: + template: $VNF$DELoam$DELvolume$DEL0 + params: + $DEL: + get_input: vcscf_name_delimeter + $VNF: + get_input: vnf_name + abstract_lbd: + type: org.openecomp.resource.abstract.nodes.lbd + directives: + - substitutable + properties: + port_lbd_ims_core_1_port_allowed_address_pairs: + - ip_address: + get_input: lbd_ims_core_v6_vip_0 + compute_lbd_user_data_format: + - RAW + compute_lbd_config_drive: + - true + port_lbd_internal_1_port_name: + - str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: + get_input: lbd_name_1 + $DEL: + get_input: vcscf_name_delimeter + port_lbd_dpdk_1_port_allowed_address_pairs: + - ip_address: 0.0.0.0/1 + - ip_address: 128.0.0.0/1 + - ip_address: ::/1 + - ip_address: 8000::/1 + port_lbd_ims_core_1_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_lbd_dpdk_1_port_mac_requirements: + mac_count_required: + is_required: false + vm_flavor_name: + get_input: lbd_flavor_name + port_lbd_ims_core_1_port_mac_requirements: + mac_count_required: + is_required: false + compute_lbd_availability_zone: + - get_input: availability_zone_1 + port_lbd_internal_1_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + port_lbd_internal_1_port_security_groups: + - - cscf_RSG + vm_image_name: + get_input: lbd_image_name + port_lbd_dpdk_1_port_network: + - cscf_internal_dpdk_network_0 + port_lbd_ims_core_1_port_name: + - str_replace: + template: $PREFIX$DELeth2 + params: + $PREFIX: + get_input: lbd_name_1 + $DEL: + get_input: vcscf_name_delimeter + port_lbd_ims_core_1_port_security_groups: + - - cscf_RSG + port_lbd_ims_core_1_port_fixed_ips: + - ip_address: + get_input: lbd_ims_core_v6_ip_1 + port_lbd_internal_1_port_fixed_ips: + - ip_address: + get_input: lbd_internal_ip_1 + port_lbd_ims_core_1_port_network: + - get_input: ims_core_net_id + compute_lbd_scheduler_hints: + - group: lbd_server_group_group + port_lbd_dpdk_1_port_name: + - str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: + get_input: lbd_name_1 + $DEL: + get_input: vcscf_name_delimeter + port_lbd_dpdk_1_port_security_groups: + - - cscf_RSG + port_lbd_dpdk_1_port_fixed_ips: + - ip_address: + get_input: lbd_internal_dpdk_ip_1 + port_lbd_internal_1_port_network: + - cscf_internal_network_0 + port_lbd_dpdk_1_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + compute_lbd_metadata: + - vf_module_id: + get_input: vf_module_id + vm_role: lbd + vnf_id: + get_input: vnf_id + vnf_name: + get_input: vnf_name + vf_module_name: + get_input: vf_module_name + port_lbd_internal_1_port_mac_requirements: + mac_count_required: + is_required: false + compute_lbd_name: + - get_input: lbd_name_1 + port_lbd_ims_core_1_port_network_role_tag: ims_core + service_template_filter: + substitute_service_template: Nested_lbdServiceTemplate.yaml + count: 1 + index_value: + get_property: + - SELF + - service_template_filter + - index_value + vm_type_tag: lbd + nfc_naming_code: lbd + requirements: + - link_lbd_lbd_internal_1_port: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency_lbd_lbd_internal_1_port: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + - link_lbd_lbd_dpdk_1_port: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_dpdk_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency_lbd_lbd_dpdk_1_port: + capability: tosca.capabilities.Node + node: cscf_internal_dpdk_network_0 + relationship: tosca.relationships.DependsOn + oam_internal_vip_0_port: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + properties: + ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + security_groups: + - cscf_RSG + fixed_ips: + - ip_address: + get_input: oam_internal_vip_0 + mac_requirements: + mac_count_required: + is_required: false + name: + str_replace: + template: $NAME$DELoam$DELinternal$DELvip + params: + $NAME: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + network: cscf_internal_network_0 + requirements: + - link: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + tdcore_zone_1_RRG: + type: org.openecomp.resource.abstract.nodes.heat.tdcore + directives: + - substitutable + properties: + vf_module_id: + get_input: vf_module_id + internal_net_id: cscf_internal_network_0 + vcscf_release: + get_input: vcscf_release + tdcore_security_group: cscf_RSG + tdcore_names: + get_input: tdcore_zone_1_names + port_tdcore_dpdk_0_port_1_network_role_tag: internal_dpdk + port_tdcore_dpdk_0_port_1_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + vcscf_gateway: + get_input: oam_internal_vip_0 + vnf_name: + get_input: vnf_name + internal_dpdk_net_id: cscf_internal_dpdk_network_0 + vf_module_name: + get_input: vf_module_name + service_template_filter: + substitute_service_template: nested_tdcoreServiceTemplate.yaml + count: + get_input: tdcore_zone_1_count + mandatory: false + vcscf_swrepo_address: + get_input: vcscf_swrepo_address + vnf_id: + get_input: vnf_id + availability_zone_0: + get_input: availability_zone_1 + port_tdcore_dpdk_0_port_1_mac_requirements: + mac_count_required: + is_required: false + tdcore_flavor_name: + get_input: tdcore_flavor_name + tdcore_image_name: + get_input: tdcore_image_name + vcscf_cmrepo_address: + get_input: vcscf_cmrepo_address + vcscf_dns_address: + get_input: vcscf_dns_address + vcscf_internal_network_mtu: + get_input: vcscf_internal_network_mtu + tdcore_server_group: tdcore_zone_1_server_group_group + index: + get_property: + - SELF + - service_template_filter + - index_value + vcscf_internal_netmask: + get_input: vcscf_internal_netmask + port_tdcore_internal_0_port_0_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + vcscf_name_delimeter: + get_input: vcscf_name_delimeter + tdcore_internal_ips: + get_input: tdcore_internal_zone_1_ips + tdcore_dpdk_ips: + get_input: tdcore_dpdk_zone_1_ips + tdcore_uuids: + get_input: tdcore_zone_1_uuids + vcscf_dn: + get_input: vcscf_dn + port_tdcore_internal_0_port_0_network_role_tag: internal + port_tdcore_internal_0_port_0_mac_requirements: + mac_count_required: + is_required: false + vcscf_du: + get_input: vcscf_du + requirements: + - link_tdcore_internal_0_port_0: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - link_tdcore_dpdk_0_port_1: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_dpdk_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + - dependency: + capability: tosca.capabilities.Node + node: cscf_internal_dpdk_network_0 + relationship: tosca.relationships.DependsOn + oam_volume_1: + type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume + properties: + availability_zone: + get_input: availability_zone_1 + size: '(get_input : oam_volume_size_0) * 1024' + name: + str_replace: + template: $VNF$DELoam$DELvolume$DEL1 + params: + $DEL: + get_input: vcscf_name_delimeter + $VNF: + get_input: vnf_name + abstract_cdi: + type: org.openecomp.resource.abstract.nodes.cdi + directives: + - substitutable + properties: + port_cdi_internal_0_port_ip_requirements: + - ip_version: 6 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + vm_flavor_name: + get_input: cdi_flavor_name + port_cdi_ims_core_0_port_name: + - str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: + get_input: cdi_name_0 + $DEL: + get_input: vcscf_name_delimeter + port_cdi_internal_0_port_allowed_address_pairs: + - ip_address: 0.0.0.0/1 + - ip_address: 128.0.0.0/1 + - ip_address: ::/1 + - ip_address: 8000::/1 + vm_image_name: + get_input: cdi_image_name + compute_cdi_scheduler_hints: + - group: cdi_server_group_group + compute_cdi_name: + - get_input: cdi_name_0 + port_cdi_ims_core_0_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_cdi_ims_core_0_port_network_role_tag: ims_core + compute_cdi_user_data_format: + - RAW + port_cdi_internal_0_port_name: + - str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: + get_input: cdi_name_0 + $DEL: + get_input: vcscf_name_delimeter + compute_cdi_availability_zone: + - get_input: availability_zone_0 + port_cdi_ims_core_0_port_network: + - get_input: ims_core_net_id + port_cdi_internal_0_port_network: + - cscf_internal_network_0 + port_cdi_internal_0_port_fixed_ips: + - ip_address: + get_input: cdi_internal_ip_0 + - ip_address: + get_input: cdi_internal_v6_ip_0 + compute_cdi_config_drive: + - true + port_cdi_internal_0_port_security_groups: + - - cscf_RSG + port_cdi_ims_core_0_port_security_groups: + - - cscf_RSG + port_cdi_ims_core_0_port_fixed_ips: + - ip_address: + get_input: cdi_ims_core_v6_ip_0 + port_cdi_internal_0_port_mac_requirements: + mac_count_required: + is_required: false + port_cdi_ims_core_0_port_allowed_address_pairs: + - ip_address: + get_input: cdi_ims_core_v6_vip_0 + compute_cdi_metadata: + - vf_module_id: + get_input: vf_module_id + vm_role: cdi + vnf_id: + get_input: vnf_id + vnf_name: + get_input: vnf_name + vf_module_name: + get_input: vf_module_name + port_cdi_ims_core_0_port_mac_requirements: + mac_count_required: + is_required: false + service_template_filter: + substitute_service_template: Nested_cdiServiceTemplate.yaml + count: 1 + index_value: + get_property: + - SELF + - service_template_filter + - index_value + vm_type_tag: cdi + nfc_naming_code: cdi + requirements: + - link_cdi_cdi_internal_0_port: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency_cdi_cdi_internal_0_port: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + cif_volume_0: + type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume + properties: + availability_zone: + get_input: availability_zone_0 + size: '(get_input : cif_volume_size_0) * 1024' + name: + str_replace: + template: $VNF$DELcif$DELvolume$DEL0 + params: + $DEL: + get_input: vcscf_name_delimeter + $VNF: + get_input: vnf_name + cif_volume_1: + type: org.openecomp.resource.vfc.nodes.heat.cinder.Volume + properties: + availability_zone: + get_input: availability_zone_1 + size: '(get_input : cif_volume_size_0) * 1024' + name: + str_replace: + template: $VNF$DELcif$DELvolume$DEL1 + params: + $DEL: + get_input: vcscf_name_delimeter + $VNF: + get_input: vnf_name + abstract_oam_1: + type: org.openecomp.resource.abstract.nodes.oam_1 + directives: + - substitutable + properties: + port_oam_internal_1_port_security_groups: + - - cscf_RSG + port_oam_oam_1_port_allowed_address_pairs: + - ip_address: + get_input: oam_oam_vip_0 + vm_flavor_name: + get_input: oam_flavor_name + port_oam_oam_1_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_oam_oam_1_port_network_role_tag: oam + port_oam_oam_1_port_security_groups: + - - cscf_RSG + vm_image_name: + get_input: oam_image_name + compute_oam_config_drive: + - true + port_oam_internal_1_port_network: + - cscf_internal_network_0 + port_oam_oam_1_port_fixed_ips: + - ip_address: + get_input: oam_oam_ip_1 + port_oam_internal_1_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + port_oam_oam_1_port_network: + - get_input: oam_net_id + port_oam_internal_1_port_allowed_address_pairs: + - ip_address: 0.0.0.0/1 + - ip_address: 128.0.0.0/1 + - ip_address: ::/1 + - ip_address: 8000::/1 + compute_oam_user_data_format: + - RAW + port_oam_internal_1_port_name: + - str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: + get_input: oam_name_1 + $DEL: + get_input: vcscf_name_delimeter + port_oam_internal_1_port_fixed_ips: + - ip_address: + get_input: oam_internal_ip_1 + port_oam_oam_1_port_name: + - str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: + get_input: oam_name_1 + $DEL: + get_input: vcscf_name_delimeter + compute_oam_scheduler_hints: + - group: oam_server_group_group + compute_oam_availability_zone: + - get_input: availability_zone_1 + compute_oam_metadata: + - vf_module_id: + get_input: vf_module_id + vm_role: oam + vnf_id: + get_input: vnf_id + vnf_name: + get_input: vnf_name + vf_module_name: + get_input: vf_module_name + port_oam_internal_1_port_mac_requirements: + mac_count_required: + is_required: false + compute_oam_name: + - get_input: oam_name_1 + port_oam_oam_1_port_mac_requirements: + mac_count_required: + is_required: false + service_template_filter: + substitute_service_template: Nested_oam_1ServiceTemplate.yaml + count: 1 + index_value: + get_property: + - SELF + - service_template_filter + - index_value + vm_type_tag: oam + nfc_naming_code: oam + requirements: + - link_oam_oam_internal_1_port: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency_oam_oam_internal_1_port: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + abstract_oam_2: + type: org.openecomp.resource.abstract.nodes.oam_2 + directives: + - substitutable + properties: + port_oam_oam_2_port_network_role_tag: oam + port_oam_oam_2_port_security_groups: + - - cscf_RSG + port_oam_oam_2_port_name: + - str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: + get_input: oam_name_2 + $DEL: + get_input: vcscf_name_delimeter + port_oam_internal_2_port_name: + - str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: + get_input: oam_name_2 + $DEL: + get_input: vcscf_name_delimeter + vm_flavor_name: + get_input: oam_flavor_name + port_oam_internal_2_port_mac_requirements: + mac_count_required: + is_required: false + vm_image_name: + get_input: oam_image_name + compute_oam_config_drive: + - true + port_oam_internal_2_port_allowed_address_pairs: + - ip_address: 0.0.0.0/1 + - ip_address: 128.0.0.0/1 + - ip_address: ::/1 + - ip_address: 8000::/1 + port_oam_internal_2_port_network: + - cscf_internal_network_0 + port_oam_internal_2_port_fixed_ips: + - ip_address: + get_input: oam_internal_ip_2 + port_oam_oam_2_port_fixed_ips: + - ip_address: + get_input: oam_oam_ip_2 + port_oam_oam_2_port_mac_requirements: + mac_count_required: + is_required: false + port_oam_oam_2_port_network: + - get_input: oam_net_id + compute_oam_user_data_format: + - RAW + port_oam_internal_2_port_security_groups: + - - cscf_RSG + port_oam_oam_2_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + compute_oam_scheduler_hints: + - group: oam_server_group_group + port_oam_internal_2_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + compute_oam_availability_zone: + - get_input: availability_zone_0 + compute_oam_metadata: + - vf_module_id: + get_input: vf_module_id + vm_role: oam + vnf_id: + get_input: vnf_id + vnf_name: + get_input: vnf_name + vf_module_name: + get_input: vf_module_name + port_oam_oam_2_port_allowed_address_pairs: + - ip_address: + get_input: oam_oam_vip_0 + compute_oam_name: + - get_input: oam_name_2 + service_template_filter: + substitute_service_template: Nested_oam_2ServiceTemplate.yaml + count: 1 + index_value: + get_property: + - SELF + - service_template_filter + - index_value + vm_type_tag: oam + nfc_naming_code: oam + requirements: + - link_oam_oam_internal_2_port: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency_oam_oam_internal_2_port: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + cif_ims_li_v6_vip_4_port: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + properties: + ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + security_groups: + - cscf_RSG + fixed_ips: + - ip_address: + get_input: cif_ims_li_v6_vip_0 + mac_requirements: + mac_count_required: + is_required: false + name: + str_replace: + template: $NAME$DELcif$DELims$DELli$DELvip$DELv6 + params: + $NAME: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + network_role_tag: ims_li_v6 + network: + get_input: ims_li_v6_net_id + cscf_internal_network_0: + type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net + properties: + dhcp_enabled: false + shared: false + ip_version: 4 + admin_state_up: true + network_name: + str_replace: + template: $PREFIX$DELinternal$DELnetwork + params: + $PREFIX: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + subnets: + cscf_internal_subnet_0: + enable_dhcp: false + ip_version: 4 + name: + str_replace: + template: $PREFIX$DELinternal$DELsubnet + params: + $PREFIX: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + cidr: + get_input: vcscf_internal_network_cidr + cscf_internal_subnet_v6_0: + enable_dhcp: false + ip_version: 6 + name: + str_replace: + template: $PREFIX$DELinternal$DELsubnetv6 + params: + $PREFIX: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + cidr: + get_input: vcscf_internal_network_v6_cidr + abstract_oam: + type: org.openecomp.resource.abstract.nodes.oam + directives: + - substitutable + properties: + port_oam_oam_0_port_name: + - str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: + get_input: oam_name_0 + $DEL: + get_input: vcscf_name_delimeter + port_oam_oam_0_port_fixed_ips: + - ip_address: + get_input: oam_oam_ip_0 + vm_flavor_name: + get_input: oam_flavor_name + port_oam_oam_0_port_mac_requirements: + mac_count_required: + is_required: false + port_oam_internal_0_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + port_oam_internal_0_port_network: + - cscf_internal_network_0 + vm_image_name: + get_input: oam_image_name + compute_oam_config_drive: + - true + port_oam_internal_0_port_name: + - str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: + get_input: oam_name_0 + $DEL: + get_input: vcscf_name_delimeter + port_oam_oam_0_port_allowed_address_pairs: + - ip_address: + get_input: oam_oam_vip_0 + port_oam_internal_0_port_security_groups: + - - cscf_RSG + port_oam_internal_0_port_fixed_ips: + - ip_address: + get_input: oam_internal_ip_0 + port_oam_oam_0_port_network_role_tag: oam + compute_oam_user_data_format: + - RAW + port_oam_oam_0_port_network: + - get_input: oam_net_id + port_oam_oam_0_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_oam_internal_0_port_mac_requirements: + mac_count_required: + is_required: false + compute_oam_scheduler_hints: + - group: oam_server_group_group + port_oam_internal_0_port_allowed_address_pairs: + - ip_address: 0.0.0.0/1 + - ip_address: 128.0.0.0/1 + - ip_address: ::/1 + - ip_address: 8000::/1 + compute_oam_availability_zone: + - get_input: availability_zone_0 + compute_oam_metadata: + - vf_module_id: + get_input: vf_module_id + vm_role: oam + vnf_id: + get_input: vnf_id + vnf_name: + get_input: vnf_name + vf_module_name: + get_input: vf_module_name + compute_oam_name: + - get_input: oam_name_0 + port_oam_oam_0_port_security_groups: + - - cscf_RSG + service_template_filter: + substitute_service_template: Nested_oamServiceTemplate.yaml + count: 1 + index_value: + get_property: + - SELF + - service_template_filter + - index_value + vm_type_tag: oam + nfc_naming_code: oam + requirements: + - link_oam_oam_internal_0_port: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency_oam_oam_internal_0_port: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + abstract_lbd_1: + type: org.openecomp.resource.abstract.nodes.lbd_1 + directives: + - substitutable + properties: + compute_lbd_user_data_format: + - RAW + compute_lbd_config_drive: + - true + port_lbd_dpdk_0_port_fixed_ips: + - ip_address: + get_input: lbd_internal_dpdk_ip_0 + port_lbd_internal_0_port_security_groups: + - - cscf_RSG + vm_flavor_name: + get_input: lbd_flavor_name + port_lbd_dpdk_0_port_security_groups: + - - cscf_RSG + compute_lbd_availability_zone: + - get_input: availability_zone_0 + port_lbd_dpdk_0_port_allowed_address_pairs: + - ip_address: 0.0.0.0/1 + - ip_address: 128.0.0.0/1 + - ip_address: ::/1 + - ip_address: 8000::/1 + vm_image_name: + get_input: lbd_image_name + port_lbd_dpdk_0_port_name: + - str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: + get_input: lbd_name_0 + $DEL: + get_input: vcscf_name_delimeter + port_lbd_dpdk_0_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + port_lbd_ims_core_0_port_network: + - get_input: ims_core_net_id + port_lbd_dpdk_0_port_network: + - cscf_internal_dpdk_network_0 + port_lbd_ims_core_0_port_mac_requirements: + mac_count_required: + is_required: false + port_lbd_ims_core_0_port_allowed_address_pairs: + - ip_address: + get_input: lbd_ims_core_v6_vip_0 + port_lbd_internal_0_port_name: + - str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: + get_input: lbd_name_0 + $DEL: + get_input: vcscf_name_delimeter + port_lbd_ims_core_0_port_network_role_tag: ims_core + compute_lbd_scheduler_hints: + - group: lbd_server_group_group + port_lbd_internal_0_port_mac_requirements: + mac_count_required: + is_required: false + port_lbd_ims_core_0_port_fixed_ips: + - ip_address: + get_input: lbd_ims_core_v6_ip_0 + port_lbd_ims_core_0_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_lbd_internal_0_port_fixed_ips: + - ip_address: + get_input: lbd_internal_ip_0 + port_lbd_internal_0_port_network: + - cscf_internal_network_0 + port_lbd_dpdk_0_port_mac_requirements: + mac_count_required: + is_required: false + compute_lbd_metadata: + - vf_module_id: + get_input: vf_module_id + vm_role: lbd + vnf_id: + get_input: vnf_id + vnf_name: + get_input: vnf_name + vf_module_name: + get_input: vf_module_name + compute_lbd_name: + - get_input: lbd_name_0 + port_lbd_internal_0_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + port_lbd_ims_core_0_port_security_groups: + - - cscf_RSG + port_lbd_ims_core_0_port_name: + - str_replace: + template: $PREFIX$DELeth2 + params: + $PREFIX: + get_input: lbd_name_0 + $DEL: + get_input: vcscf_name_delimeter + service_template_filter: + substitute_service_template: Nested_lbd_1ServiceTemplate.yaml + count: 1 + index_value: + get_property: + - SELF + - service_template_filter + - index_value + vm_type_tag: lbd + nfc_naming_code: lbd + requirements: + - link_lbd_lbd_internal_0_port: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency_lbd_lbd_internal_0_port: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + - link_lbd_lbd_dpdk_0_port: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_dpdk_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency_lbd_lbd_dpdk_0_port: + capability: tosca.capabilities.Node + node: cscf_internal_dpdk_network_0 + relationship: tosca.relationships.DependsOn + - dependency: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + count: + get_input: cscf_zone_0_count + mandatory: false + vcscf_swrepo_address: + get_input: vcscf_swrepo_address + cscf_uuids: + get_input: cscf_zone_0_uuids + vnf_id: + get_input: vnf_id + availability_zone_0: + get_input: availability_zone_0 + cscf_internal_v6_ips: + get_input: cscf_internal_zone_0_v6_ips + cscf_flavor_name: + get_input: cscf_flavor_name + vcscf_cmrepo_address: + get_input: vcscf_cmrepo_address + vcscf_dns_address: + get_input: vcscf_dns_address + vcscf_internal_network_mtu: + get_input: vcscf_internal_network_mtu + port_cscf_internal_0_port_0_ip_requirements: + - ip_version: 6 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + index: + get_property: + - SELF + - service_template_filter + - index_value + vcscf_internal_netmask: + get_input: vcscf_internal_netmask + vcscf_name_delimeter: + get_input: vcscf_name_delimeter + port_cscf_internal_0_port_0_network_role_tag: internal + vcscf_dn: + get_input: vcscf_dn + vcscf_du: + get_input: vcscf_du + port_cscf_internal_0_port_0_mac_requirements: + mac_count_required: + is_required: false + cscf_security_group: cscf_RSG + requirements: + - link_cscf_internal_0_port_0: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + - dependency: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + lbd_internal_dpdk_vip_1_port: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + properties: + ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + security_groups: + - cscf_RSG + fixed_ips: + - ip_address: + get_input: lbd_internal_dpdk_vip_0 + mac_requirements: + mac_count_required: + is_required: false + name: + str_replace: + template: $NAME$DELlbd$DELinternal$DELdpdk$DELvip + params: + $NAME: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + network: cscf_internal_dpdk_network_0 + requirements: + - link: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_dpdk_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency: + capability: tosca.capabilities.Node + node: cscf_internal_dpdk_network_0 + relationship: tosca.relationships.DependsOn + cif_oam_vip_3_port: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + properties: + ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + security_groups: + - cscf_RSG + fixed_ips: + - ip_address: + get_input: cif_oam_vip_1 + mac_requirements: + mac_count_required: + is_required: false + name: + str_replace: + template: $NAME$DELcif$DELoam$DELvip1 + params: + $NAME: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + network_role_tag: oam + network: + get_input: oam_net_id + cdi_ims_core_v6_vip_1_port: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + properties: + ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + security_groups: + - cscf_RSG + fixed_ips: + - ip_address: + get_input: cdi_ims_core_v6_vip_0 + mac_requirements: + mac_count_required: + is_required: false + name: + str_replace: + template: $NAME$DELcdi$DELims$DELdb$DELvip$DELv6 + params: + $NAME: + get_input: vnf_name + $DEL: + get_input: vcscf_name_delimeter + network_role_tag: ims_core + network: + get_input: ims_core_net_id + abstract_cif: + type: org.openecomp.resource.abstract.nodes.cif + directives: + - substitutable + properties: + port_cif_ims_core_0_port_network: + - get_input: ims_core_net_id + port_cif_oam_0_port_1_name: + - str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: + get_input: cif_name_0 + $DEL: + get_input: vcscf_name_delimeter + port_cif_oam_0_port_1_allowed_address_pairs: + - ip_address: + get_input: cif_oam_vip_0 + port_cif_oam_0_port_1_fixed_ips: + - ip_address: + get_input: cif_oam_ip_0 + vm_flavor_name: + get_input: cif_flavor_name + port_cif_internal_0_port_name: + - str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: + get_input: cif_name_0 + $DEL: + get_input: vcscf_name_delimeter + vm_image_name: + get_input: cif_image_name + compute_cif_user_data_format: + - RAW + port_cif_oam_0_port_1_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_cif_ims_li_0_port_fixed_ips: + - ip_address: + get_input: cif_ims_li_v6_ip_0 + compute_cif_scheduler_hints: + - group: cif_server_group_group + port_cif_oam_0_port_1_security_groups: + - - cscf_RSG + port_cif_ims_li_0_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + compute_cif_metadata: + - vf_module_id: + get_input: vf_module_id + vm_role: cif + vnf_id: + get_input: vnf_id + vnf_name: + get_input: vnf_name + vf_module_name: + get_input: vf_module_name + port_cif_ims_li_0_port_name: + - str_replace: + template: $PREFIX$DELeth4 + params: + $PREFIX: + get_input: cif_name_0 + $DEL: + get_input: vcscf_name_delimeter + port_cif_ims_core_0_port_fixed_ips: + - ip_address: + get_input: cif_ims_core_v6_ip_0 + port_cif_oam_0_port_3_network_role_tag: oam + port_cif_ims_core_0_port_security_groups: + - - cscf_RSG + port_cif_ims_core_0_port_name: + - str_replace: + template: $PREFIX$DELeth2 + params: + $PREFIX: + get_input: cif_name_0 + $DEL: + get_input: vcscf_name_delimeter + port_cif_internal_0_port_network: + - cscf_internal_network_0 + port_cif_oam_0_port_3_security_groups: + - - cscf_RSG + port_cif_ims_core_0_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_cif_ims_li_0_port_mac_requirements: + mac_count_required: + is_required: false + port_cif_oam_0_port_1_network: + - get_input: oam_net_id + port_cif_ims_li_0_port_security_groups: + - - cscf_RSG + compute_cif_name: + - get_input: cif_name_0 + compute_cif_availability_zone: + - get_input: availability_zone_0 + port_cif_oam_0_port_1_network_role_tag: oam + port_cif_oam_0_port_3_mac_requirements: + mac_count_required: + is_required: false + port_cif_ims_core_0_port_allowed_address_pairs: + - ip_address: + get_input: cif_ims_core_v6_vip_0 + port_cif_oam_0_port_3_fixed_ips: + - ip_address: + get_input: cif_oam_ip_2 + port_cif_ims_core_0_port_network_role_tag: ims_core + port_cif_ims_li_0_port_allowed_address_pairs: + - ip_address: + get_input: cif_ims_li_v6_vip_0 + port_cif_internal_0_port_mac_requirements: + mac_count_required: + is_required: false + port_cif_ims_li_0_port_network: + - get_input: ims_li_v6_net_id + port_cif_internal_0_port_security_groups: + - - cscf_RSG + port_cif_ims_li_0_port_network_role_tag: ims_li_v6 + port_cif_oam_0_port_3_allowed_address_pairs: + - ip_address: + get_input: cif_oam_vip_1 + port_cif_internal_0_port_fixed_ips: + - ip_address: + get_input: cif_internal_ip_0 + - ip_address: + get_input: cif_internal_v6_ip_0 + compute_cif_config_drive: + - true + port_cif_oam_0_port_3_name: + - str_replace: + template: $PREFIX$DELeth3 + params: + $PREFIX: + get_input: cif_name_0 + $DEL: + get_input: vcscf_name_delimeter + port_cif_oam_0_port_3_network: + - get_input: oam_net_id + port_cif_ims_core_0_port_mac_requirements: + mac_count_required: + is_required: false + port_cif_internal_0_port_allowed_address_pairs: + - ip_address: + get_input: cif_internal_vip_0 + port_cif_oam_0_port_1_mac_requirements: + mac_count_required: + is_required: false + port_cif_oam_0_port_3_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_cif_internal_0_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + service_template_filter: + substitute_service_template: Nested_cifServiceTemplate.yaml + count: 1 + index_value: + get_property: + - SELF + - service_template_filter + - index_value + vm_type_tag: cif + nfc_naming_code: cif + requirements: + - link_cif_cif_internal_0_port: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency_cif_cif_internal_0_port: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + abstract_cif_1: + type: org.openecomp.resource.abstract.nodes.cif_1 + directives: + - substitutable + properties: + port_cif_oam_1_port_1_name: + - str_replace: + template: $PREFIX$DELeth1 + params: + $PREFIX: + get_input: cif_name_1 + $DEL: + get_input: vcscf_name_delimeter + port_cif_ims_core_1_port_security_groups: + - - cscf_RSG + port_cif_oam_1_port_1_mac_requirements: + mac_count_required: + is_required: false + port_cif_oam_1_port_3_network: + - get_input: oam_net_id + vm_flavor_name: + get_input: cif_flavor_name + vm_image_name: + get_input: cif_image_name + compute_cif_user_data_format: + - RAW + port_cif_oam_1_port_3_allowed_address_pairs: + - ip_address: + get_input: cif_oam_vip_1 + compute_cif_scheduler_hints: + - group: cif_server_group_group + port_cif_oam_1_port_3_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_cif_internal_1_port_security_groups: + - - cscf_RSG + port_cif_oam_1_port_1_network: + - get_input: oam_net_id + port_cif_ims_core_1_port_network_role_tag: ims_core + port_cif_ims_li_1_port_security_groups: + - - cscf_RSG + port_cif_ims_li_1_port_allowed_address_pairs: + - ip_address: + get_input: cif_ims_li_v6_vip_0 + port_cif_internal_1_port_allowed_address_pairs: + - ip_address: + get_input: cif_internal_vip_0 + port_cif_oam_1_port_3_security_groups: + - - cscf_RSG + compute_cif_metadata: + - vf_module_id: + get_input: vf_module_id + vm_role: cif + vnf_id: + get_input: vnf_id + vnf_name: + get_input: vnf_name + vf_module_name: + get_input: vf_module_name + port_cif_oam_1_port_1_fixed_ips: + - ip_address: + get_input: cif_oam_ip_1 + port_cif_internal_1_port_network: + - cscf_internal_network_0 + port_cif_ims_core_1_port_network: + - get_input: ims_core_net_id + port_cif_oam_1_port_3_fixed_ips: + - ip_address: + get_input: cif_oam_ip_3 + port_cif_oam_1_port_1_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_cif_ims_core_1_port_mac_requirements: + mac_count_required: + is_required: false + compute_cif_name: + - get_input: cif_name_1 + compute_cif_availability_zone: + - get_input: availability_zone_1 + port_cif_internal_1_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_cif_ims_li_1_port_name: + - str_replace: + template: $PREFIX$DELeth4 + params: + $PREFIX: + get_input: cif_name_1 + $DEL: + get_input: vcscf_name_delimeter + port_cif_internal_1_port_name: + - str_replace: + template: $PREFIX$DELeth0 + params: + $PREFIX: + get_input: cif_name_1 + $DEL: + get_input: vcscf_name_delimeter + port_cif_ims_li_1_port_fixed_ips: + - ip_address: + get_input: cif_ims_li_v6_ip_1 + port_cif_internal_1_port_mac_requirements: + mac_count_required: + is_required: false + port_cif_ims_li_1_port_mac_requirements: + mac_count_required: + is_required: false + port_cif_ims_li_1_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_cif_ims_core_1_port_fixed_ips: + - ip_address: + get_input: cif_ims_core_v6_ip_1 + port_cif_ims_core_1_port_allowed_address_pairs: + - ip_address: + get_input: cif_ims_core_v6_vip_0 + port_cif_oam_1_port_1_network_role_tag: oam + port_cif_oam_1_port_3_mac_requirements: + mac_count_required: + is_required: false + port_cif_ims_core_1_port_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: true + port_cif_ims_li_1_port_network: + - get_input: ims_li_v6_net_id + port_cif_internal_1_port_fixed_ips: + - ip_address: + get_input: cif_internal_ip_1 + - ip_address: + get_input: cif_internal_v6_ip_1 + port_cif_ims_core_1_port_name: + - str_replace: + template: $PREFIX$DELeth2 + params: + $PREFIX: + get_input: cif_name_1 + $DEL: + get_input: vcscf_name_delimeter + compute_cif_config_drive: + - true + port_cif_oam_1_port_3_name: + - str_replace: + template: $PREFIX$DELeth3 + params: + $PREFIX: + get_input: cif_name_0 + $DEL: + get_input: vcscf_name_delimeter + port_cif_ims_li_1_port_network_role_tag: ims_li_v6 + port_cif_oam_1_port_1_security_groups: + - - cscf_RSG + port_cif_oam_1_port_1_allowed_address_pairs: + - ip_address: + get_input: cif_oam_vip_0 + port_cif_oam_1_port_3_network_role_tag: oam + service_template_filter: + substitute_service_template: Nested_cif_1ServiceTemplate.yaml + count: 1 + index_value: + get_property: + - SELF + - service_template_filter + - index_value + vm_type_tag: cif + nfc_naming_code: cif + requirements: + - link_cif_cif_internal_1_port: + capability: tosca.capabilities.network.Linkable + node: cscf_internal_network_0 + relationship: tosca.relationships.network.LinksTo + - dependency_cif_cif_internal_1_port: + capability: tosca.capabilities.Node + node: cscf_internal_network_0 + relationship: tosca.relationships.DependsOn + groups: + tdcore_zone_0_server_group_group: + type: tosca.groups.Root + members: [ + ] + tdcore_zone_1_server_group_group: + type: tosca.groups.Root + members: [ + ] + oam_server_group_group: + type: tosca.groups.Root + members: + - abstract_oam + - abstract_oam_1 + - abstract_oam_2 + cdi_server_group_group: + type: tosca.groups.Root + members: + - abstract_cdi + - abstract_cdi_1 + cif_server_group_group: + type: tosca.groups.Root + members: + - abstract_cif + - abstract_cif_1 + base_cscf_group: + type: org.openecomp.groups.heat.HeatStack + properties: + heat_file: ../Artifacts/base_cscf.yaml + description: | + CFX-5000 N+K VNF HOT template for AT&T. + members: + - cscf_RSG + - cdi_internal_v6_vip_0_port + - cscf_internal_dpdk_network_0 + - cif_ims_core_v6_vip_2_port + - cif_internal_vip_0_port + - cscf_zone_1_RRG + - oam_oam_vip_1_port + - tdcore_zone_0_RRG + - lbd_ims_core_v6_vip_2_port + - cif_oam_vip_1_port + - oam_internal_vip_0_port + - tdcore_zone_1_RRG + - cif_ims_li_v6_vip_4_port + - cscf_internal_network_0 + - cscf_zone_0_RRG + - lbd_internal_dpdk_vip_1_port + - cif_oam_vip_3_port + - cdi_ims_core_v6_vip_1_port + - abstract_lbd + - abstract_lbd_1 + - abstract_cif + - abstract_cif_1 + - abstract_oam + - abstract_oam_1 + - abstract_oam_2 + - abstract_cdi + - abstract_cdi_1 + base_cscf_volume_group: + type: org.openecomp.groups.heat.HeatStack + properties: + heat_file: ../Artifacts/base_cscf_volume.yaml + description: Volume template for CFX + members: + - oam_volume_1 + - oam_volume_0 + - cif_volume_0 + - cif_volume_1 + lbd_server_group_group: + type: tosca.groups.Root + members: + - abstract_lbd + - abstract_lbd_1 + outputs: + oam_volume_id_1: + description: volume id for second oam + value: oam_volume_1 + oam_volume_id_0: + description: volume id for first oam + value: oam_volume_0 + cif_volume_id_0: + description: volume id for first cif + value: cif_volume_0 + cif_volume_id_1: + description: volume id for second cif + value: cif_volume_1 + policies: + oam_server_group_policy: + type: org.openecomp.policies.placement.Antilocate + properties: + name: + str_replace: + template: $VNF$DELoam$DELgroup + params: + $DEL: + get_input: vcscf_name_delimeter + $VNF: + get_input: vnf_name + container_type: host + targets: + - oam_server_group_group + cdi_server_group_policy: + type: org.openecomp.policies.placement.Antilocate + properties: + name: + str_replace: + template: $VNF$DELcdi$DELgroup + params: + $DEL: + get_input: vcscf_name_delimeter + $VNF: + get_input: vnf_name + container_type: host + targets: + - cdi_server_group_group + lbd_server_group_policy: + type: org.openecomp.policies.placement.Antilocate + properties: + name: + str_replace: + template: $VNF$DELlbd$DELgroup + params: + $DEL: + get_input: vcscf_name_delimeter + $VNF: + get_input: vnf_name + container_type: host + targets: + - lbd_server_group_group + tdcore_zone_0_server_group_policy: + type: org.openecomp.policies.placement.Antilocate + properties: + name: + str_replace: + template: $VNF$DELtdcore$DELzone0$DELgroup + params: + $DEL: + get_input: vcscf_name_delimeter + $VNF: + get_input: vnf_name + container_type: host + targets: + - tdcore_zone_0_server_group_group + cif_server_group_policy: + type: org.openecomp.policies.placement.Antilocate + properties: + name: + str_replace: + template: $VNF$DELcif$DELgroup + params: + $DEL: + get_input: vcscf_name_delimeter + $VNF: + get_input: vnf_name + container_type: host + targets: + - cif_server_group_group + tdcore_zone_1_server_group_policy: + type: org.openecomp.policies.placement.Antilocate + properties: + name: + str_replace: + template: $VNF$DELtdcore$DELzone1$DELgroup + params: + $DEL: + get_input: vcscf_name_delimeter + $VNF: + get_input: vnf_name + container_type: host + targets: + - tdcore_zone_1_server_group_group diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedMultiLevels/out/nested3ServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedMultiLevels/out/nested3ServiceTemplate.yaml index f312efdeb2..e7f660fe28 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedMultiLevels/out/nested3ServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedMultiLevels/out/nested3ServiceTemplate.yaml @@ -89,6 +89,29 @@ topology_template: is_required: true floating_ip_count_required: is_required: false + requirements: + - dependency_cmaui_port_7: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_cmaui_port_7: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_cmaui_port_8: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_cmaui_port_8: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_cmaui: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_cmaui: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo abstract_cmaui: type: org.openecomp.resource.abstract.nodes.cmaui directives: @@ -584,4 +607,4 @@ topology_template: - link_cmaui_port_7 dependency_cmaui_port_5: - abstract_cmaui - - dependency_cmaui_cmaui_port_5 + - dependency_cmaui_cmaui_port_5
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml index c73d702699..10d7c21256 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -1138,6 +1138,580 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.pcm_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pcm_port_0_network_role: + type: string + required: true + status: SUPPORTED + metadata: + type: string + description: metadata + required: true + status: SUPPORTED + port_pcm_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + availabilityzone_name: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + port_pcm_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_image_name: + type: string + description: PCRF CM image name + required: true + status: SUPPORTED + port_pcm_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + pcm_server_name: + type: string + description: PCRF CM server name + required: true + status: SUPPORTED + cps_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + oam_net_name: + type: string + description: OAM network name + required: true + status: SUPPORTED + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + oam_net_gw: + type: string + description: CPS network gateway + required: true + status: SUPPORTED + security_group_name: + type: string + description: the name of security group + required: true + status: SUPPORTED + cps_net_ip: + type: string + description: CPS network ip + required: true + status: SUPPORTED + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_flavor_name: + type: string + description: flavor name of PCRF CM instance + required: true + status: SUPPORTED + key_name: + type: string + description: key_name + required: true + status: SUPPORTED + user_data_format: + type: string + description: user_data_format + required: true + status: SUPPORTED + pcm_vol: + type: string + description: CPS Cluman Cinder Volume + required: true + status: SUPPORTED + port_pcm_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + cps_net_name: + type: string + description: CPS network name + required: true + status: SUPPORTED + oam_net_ip: + type: string + description: OAM network ip + required: true + status: SUPPORTED + oam_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_order: + type: integer + required: true + status: SUPPORTED + attributes: + server_pcm_id: + type: string + description: the pcm nova service id + status: SUPPORTED + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + capabilities: + network.incoming.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_pcm_port_0: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_pcm_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + memory.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_pcm: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_0: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_0: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + endpoint_server_pcm: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_pcm: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_pcm: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_pcm: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_pcm: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED org.openecomp.resource.abstract.nodes.heat.pcm_server_1: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -2017,3 +2591,609 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.oam_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pcm_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + availabilityzone_name: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + port_pcm_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + oam_server_name: + type: string + description: oam server name + required: true + status: SUPPORTED + port_pcm_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + oam_image_name: + type: string + description: oam image name + required: true + status: SUPPORTED + cps_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + oam_net_name: + type: string + description: OAM network name + required: true + status: SUPPORTED + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + oam_net_gw: + type: string + description: CPS network gateway + required: true + status: SUPPORTED + oam_flavor_name: + type: string + description: flavor name of PCRF CM instance + required: true + status: SUPPORTED + security_group_name: + type: string + description: the name of security group + required: true + status: SUPPORTED + cps_net_ip: + type: string + description: CPS network ip + required: true + status: SUPPORTED + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_vol: + type: string + description: CPS Cluman Cinder Volume + required: true + status: SUPPORTED + port_pcm_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + cps_net_name: + type: string + description: CPS network name + required: true + status: SUPPORTED + oam_net_ip: + type: string + description: OAM network ip + required: true + status: SUPPORTED + oam_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_order: + type: integer + required: true + status: SUPPORTED + attributes: + server_oam_id: + type: string + description: the oam nova service id + status: SUPPORTED + requirements: + - dependency_server_oam: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_oam: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + capabilities: + cpu_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_pcm_port_0: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_pcm_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + disk.read.bytes_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_oam: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_0: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_0: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_server_oam: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_oam: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_oam: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_oam: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_oam: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_oam: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.compute: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_compute_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_image_name: + type: string + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_compute_metadata: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_compute_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_flavor_name: + type: string + required: true + status: SUPPORTED + compute_compute_config_drive: + type: list + required: true + status: SUPPORTED + entry_schema: + type: boolean + attributes: + compute_instance_name: + type: string + status: SUPPORTED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesGetAttrIn/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesGetAttrIn/out/MainServiceTemplate.yaml index e44327fa33..b1f6c7e875 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesGetAttrIn/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesGetAttrIn/out/MainServiceTemplate.yaml @@ -105,6 +105,11 @@ topology_template: type: string description: PCRF CM image name default: rhel2 + shared_security_group_id2: + hidden: false + immutable: false + type: string + description: network name of jsa log network oam_server_names: label: PCRF CM server names hidden: false @@ -136,6 +141,11 @@ topology_template: type: string description: CPS network mask default: 255.255.255.0 + shared_security_group_id1: + hidden: false + immutable: false + type: string + description: network name of jsa log network oam_net_name: label: OAM network name hidden: false @@ -151,8 +161,10 @@ topology_template: properties: pcm_flavor_name: get_input: pcm_flavor_name + p1: jsa_security_group1 service_template_filter: substitute_service_template: nested-pcm_v0.1ServiceTemplate.yaml + p2: jsa_security_group2 port_pcm_port_1_network_role_tag: oam port_pcm_port_0_ip_requirements: - ip_version: 4 @@ -179,53 +191,68 @@ topology_template: get_input: - pcm_server_names - 0 + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo server_oam_001: type: org.openecomp.resource.abstract.nodes.heat.oam_server directives: - substitutable properties: - port_pcm_port_1_network_role_tag: oam availabilityzone_name: get_input: availabilityzone_name - port_pcm_port_0_ip_requirements: - - ip_version: 4 - ip_count_required: - is_required: true - floating_ip_count_required: - is_required: false oam_net_gw: get_input: oam_net_gw + port_oam_port_0_mac_requirements: + mac_count_required: + is_required: false oam_flavor_name: get_input: oam_flavor_name - security_group_name: - get_input: security_group_name cps_net_ip: get_input: - cps_net_ips - 0 + port_oam_port_1_network_role_tag: oam oam_server_name: get_input: - oam_server_names - 0 - port_pcm_port_1_mac_requirements: - mac_count_required: - is_required: false service_template_filter: substitute_service_template: nested-oam_v0.1ServiceTemplate.yaml - pcm_vol: - get_input: - - pcm_volumes - - 0 - port_pcm_port_1_ip_requirements: + port_oam_port_1_ip_requirements: - ip_version: 4 ip_count_required: is_required: true floating_ip_count_required: is_required: false - port_pcm_port_0_network_role_tag: cps - port_pcm_port_0_mac_requirements: + port_oam_port_1_mac_requirements: mac_count_required: is_required: false + pcm_vol: + get_input: + - pcm_volumes + - 0 + port_oam_port_0_network_role_tag: cps oam_image_name: get_input: oam_image_name cps_net_name: @@ -238,17 +265,42 @@ topology_template: - 0 oam_net_mask: get_input: oam_net_mask + port_oam_port_0_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false oam_net_name: get_input: oam_net_name + requirements: + - dependency_oam_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_oam_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_oam: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_oam: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_oam_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_oam_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo server_pcm_001: type: org.openecomp.resource.abstract.nodes.heat.pcm_server directives: - substitutable properties: - metadata: - get_attribute: - - compute_port_0 - - device_id port_pcm_port_1_network_role_tag: oam availabilityzone_name: get_input: availabilityzone_name @@ -273,16 +325,8 @@ topology_template: is_required: false pcm_flavor_name: get_input: pcm_flavor_name - key_name: - get_attribute: - - server_oam_001 - - accessIPv4 service_template_filter: substitute_service_template: nested-pcm_v0.1ServiceTemplate.yaml - user_data_format: - get_attribute: - - server_pcm_002 - - oam_net_gw pcm_vol: get_input: - pcm_volumes @@ -313,17 +357,43 @@ topology_template: get_input: oam_net_mask oam_net_name: get_input: oam_net_name + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo packet_mirror_network: type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net properties: - tenant_id: - get_attribute: - - abstract_compute - - compute_instance_name network_name: - get_attribute: - - server_pcm_001 - - instance_name + get_input: net_name + requirements: + - dependency: + capability: tosca.capabilities.Node + node: server_pcm_001 + relationship: tosca.relationships.DependsOn + - dependency: + capability: feature_compute + node: abstract_compute + relationship: tosca.relationships.DependsOn compute_port_0: type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port properties: @@ -338,6 +408,104 @@ topology_template: is_required: false network: get_input: net_name + jsa_security_group1: + type: org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules + properties: + name: jsa_security_group1_name + description: ems security group + rules: + - protocol: icmp + ethertype: IPv6 + remote_ip_prefix: ::/0 + direction: ingress + requirements: + - port: + capability: attachment_pcm_port_0 + node: server_pcm_002 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_pcm_port_1 + node: server_pcm_002 + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_oam_port_1 + node: test_shared_node_connected_in_nested + relationship: org.openecomp.relationships.AttachesTo + - port: + capability: attachment_oam_port_0 + node: test_shared_node_connected_in_nested + relationship: org.openecomp.relationships.AttachesTo + jsa_security_group2: + type: org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules + properties: + name: jsa_security_group2_name + description: ems security group + rules: + - protocol: tcp + ethertype: IPv4 + port_range_max: 65535 + remote_ip_prefix: 0.0.0.0/0 + direction: egress + port_range_min: 1 + requirements: + - port: + capability: attachment_pcm_port_0 + node: server_pcm_002 + relationship: org.openecomp.relationships.AttachesTo + test_shared_node_connected_in_nested: + type: org.openecomp.resource.abstract.nodes.heat.oam_server + directives: + - substitutable + properties: + service_template_filter: + substitute_service_template: nested-oam_v0.1ServiceTemplate.yaml + p2: + get_input: shared_security_group_id2 + port_oam_port_1_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + port_oam_port_1_mac_requirements: + mac_count_required: + is_required: false + port_oam_port_0_mac_requirements: + mac_count_required: + is_required: false + port_oam_port_0_network_role_tag: cps + port_oam_port_1_network_role_tag: oam + port_oam_port_0_ip_requirements: + - ip_version: 4 + ip_count_required: + is_required: true + floating_ip_count_required: + is_required: false + shared_security_group_id1: + get_input: shared_security_group_id1 + requirements: + - dependency_oam_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_oam_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_oam: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_oam: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_oam_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_oam_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo abstract_compute: type: org.openecomp.resource.abstract.nodes.compute directives: @@ -351,8 +519,8 @@ topology_template: get_input: compute_image_name compute_compute_metadata: - get_attribute: - - compute_port_0 - - device_id + - server_pcm_001 + - server_pcm_id compute_compute_name: - compute_name: null vm_flavor_name: @@ -395,4 +563,14 @@ topology_template: - server_pcm_001 - packet_mirror_network - compute_port_0 - - abstract_compute
\ No newline at end of file + - jsa_security_group1 + - jsa_security_group2 + - abstract_compute + addOn_group: + type: org.openecomp.groups.heat.HeatStack + properties: + heat_file: ../Artifacts/addOn.yml + description: | + Version 2.0 02-09-2016 (Authors: John Doe, user PROD) + members: + - test_shared_node_connected_in_nested
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedOutputParamGetAttrIn/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedOutputParamGetAttrIn/out/MainServiceTemplate.yaml index e49afcd726..1ce813d1b6 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedOutputParamGetAttrIn/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedOutputParamGetAttrIn/out/MainServiceTemplate.yaml @@ -181,6 +181,29 @@ topology_template: get_input: - pcm_server_names - 0 + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo server_oam_001: type: org.openecomp.resource.abstract.nodes.heat.oam_server directives: @@ -242,6 +265,29 @@ topology_template: get_input: oam_net_mask oam_net_name: get_input: oam_net_name + requirements: + - dependency_server_oam: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_oam: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo server_pcm_001: type: org.openecomp.resource.abstract.nodes.heat.pcm_server directives: @@ -303,6 +349,29 @@ topology_template: get_input: oam_net_mask oam_net_name: get_input: oam_net_name + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo packet_mirror_network: type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net properties: @@ -408,4 +477,4 @@ topology_template: value: get_attribute: - server_pcm_002 - - server_pcm_id + - server_pcm_id
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneCompute/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneCompute/out/MainServiceTemplate.yaml index 0f63982943..17fb056d3a 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneCompute/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneCompute/out/MainServiceTemplate.yaml @@ -181,6 +181,29 @@ topology_template: get_input: oam_net_mask oam_net_name: get_input: oam_net_name + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo packet_mirror_network: type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net properties: diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneComputeDiffPortType/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneComputeDiffPortType/out/GlobalSubstitutionTypesServiceTemplate.yaml index 060e2ed852..ba0cec7fc0 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneComputeDiffPortType/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneComputeDiffPortType/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -564,6 +564,565 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.pcm_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pcm_1port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + availabilityzone_name: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + port_pcm_1port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + pcm_image_name: + type: string + description: PCRF CM image name + required: true + status: SUPPORTED + port_pcm_1port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_1port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_2port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_2port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_1port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pcm_1port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + pcm_server_name: + type: string + description: PCRF CM server name + required: true + status: SUPPORTED + cps_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + oam_net_name: + type: string + description: OAM network name + required: true + status: SUPPORTED + port_pcm_1port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_2port_1_network_role: + type: string + required: true + status: SUPPORTED + oam_net_gw: + type: string + description: CPS network gateway + required: true + status: SUPPORTED + port_pcm_1port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_2port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + security_group_name: + type: string + description: the name of security group + required: true + status: SUPPORTED + cps_net_ip: + type: string + description: CPS network ip + required: true + status: SUPPORTED + port_pcm_2port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + pcm_flavor_name: + type: string + description: flavor name of PCRF CM instance + required: true + status: SUPPORTED + port_pcm_2port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + pcm_vol: + type: string + description: CPS Cluman Cinder Volume + required: true + status: SUPPORTED + cps_net_name: + type: string + description: CPS network name + required: true + status: SUPPORTED + oam_net_ip: + type: string + description: OAM network ip + required: true + status: SUPPORTED + oam_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_2port_1_order: + type: integer + required: true + status: SUPPORTED + port_pcm_2port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + attributes: + server_pcm_id: + type: string + description: the pcm nova service id + status: SUPPORTED + requirements: + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_pcm_1port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_1port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_pcm_2port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_2port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + capabilities: + binding_pcm_2port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + cpu_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_2port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_2port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_2port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_1port_0: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_pcm_2port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_2port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_2port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_2port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_1port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_1port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_pcm: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_1port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + endpoint_server_pcm: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_1port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_pcm_1port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_2port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + scalable_server_pcm: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_1port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_2port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_1port_0: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_2port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_pcm: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_1port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_pcm_1port_0: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + cpu.delta_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_1port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_pcm: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_pcm: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED org.openecomp.resource.abstract.nodes.compute: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -865,3 +1424,46 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.compute: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_compute_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_image_name: + type: string + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_compute_metadata: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_compute_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_flavor_name: + type: string + required: true + status: SUPPORTED + compute_compute_config_drive: + type: list + required: true + status: SUPPORTED + entry_schema: + type: boolean
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneComputeDiffPortType/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneComputeDiffPortType/out/MainServiceTemplate.yaml index 6bfb11cba1..90babddc3e 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneComputeDiffPortType/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneComputeDiffPortType/out/MainServiceTemplate.yaml @@ -181,6 +181,29 @@ topology_template: get_input: oam_net_mask oam_net_name: get_input: oam_net_name + requirements: + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_1port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_1port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_pcm_2port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_2port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo packet_mirror_network: type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net properties: diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedPointingToThreeDiffNestedFilesSameComputeType/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedPointingToThreeDiffNestedFilesSameComputeType/out/MainServiceTemplate.yaml index 976be29e67..6736c9caa3 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedPointingToThreeDiffNestedFilesSameComputeType/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedPointingToThreeDiffNestedFilesSameComputeType/out/MainServiceTemplate.yaml @@ -91,6 +91,29 @@ topology_template: get_input: - pcm_server_names - 0 + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo server_pcm_001: type: org.openecomp.resource.abstract.nodes.heat.pcm_server_1 directives: @@ -128,6 +151,29 @@ topology_template: get_input: - pcm_server_names - 0 + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo server_pcm_003: type: org.openecomp.resource.abstract.nodes.heat.pcm_server_2 directives: @@ -165,6 +211,29 @@ topology_template: get_input: - pcm_server_names - 0 + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo compute_port_0: type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port properties: @@ -189,4 +258,4 @@ topology_template: - server_pcm_002 - server_pcm_001 - server_pcm_003 - - compute_port_0 + - compute_port_0
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedSameTypeTwoPointingOnSameNestedFile/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedSameTypeTwoPointingOnSameNestedFile/out/MainServiceTemplate.yaml index 2a5f3b77f9..2e0c569781 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedSameTypeTwoPointingOnSameNestedFile/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedSameTypeTwoPointingOnSameNestedFile/out/MainServiceTemplate.yaml @@ -91,6 +91,29 @@ topology_template: get_input: - pcm_server_names - 0 + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo server_pcm_001: type: org.openecomp.resource.abstract.nodes.heat.pcm_server directives: @@ -128,6 +151,29 @@ topology_template: get_input: - pcm_server_names - 0 + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo server_pcm_003: type: org.openecomp.resource.abstract.nodes.heat.pcm_server_2 directives: @@ -165,6 +211,29 @@ topology_template: get_input: - pcm_server_names - 0 + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo compute_port_0: type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port properties: diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/twoNestedNodeTemplatesWithSameComputeType/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/twoNestedNodeTemplatesWithSameComputeType/out/GlobalSubstitutionTypesServiceTemplate.yaml index 92ea0fa5e7..ae6167dd3e 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/twoNestedNodeTemplatesWithSameComputeType/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/twoNestedNodeTemplatesWithSameComputeType/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -564,6 +564,565 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.pcm_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pcm_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + availabilityzone_name: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + port_pcm_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_image_name: + type: string + description: PCRF CM image name + required: true + status: SUPPORTED + port_pcm_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + pcm_server_name: + type: string + description: PCRF CM server name + required: true + status: SUPPORTED + cps_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + oam_net_name: + type: string + description: OAM network name + required: true + status: SUPPORTED + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + oam_net_gw: + type: string + description: CPS network gateway + required: true + status: SUPPORTED + security_group_name: + type: string + description: the name of security group + required: true + status: SUPPORTED + cps_net_ip: + type: string + description: CPS network ip + required: true + status: SUPPORTED + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pcm_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_flavor_name: + type: string + description: flavor name of PCRF CM instance + required: true + status: SUPPORTED + pcm_vol: + type: string + description: CPS Cluman Cinder Volume + required: true + status: SUPPORTED + port_pcm_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + cps_net_name: + type: string + description: CPS network name + required: true + status: SUPPORTED + oam_net_ip: + type: string + description: OAM network ip + required: true + status: SUPPORTED + oam_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_order: + type: integer + required: true + status: SUPPORTED + attributes: + server_pcm_id: + type: string + description: the pcm nova service id + status: SUPPORTED + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + capabilities: + network.incoming.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_pcm_port_0: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_pcm_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + memory.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_pcm: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_0: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_0: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + endpoint_server_pcm: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + vcpus_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_pcm: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_pcm: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_pcm: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_pcm: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED org.openecomp.resource.abstract.nodes.heat.pcm_server_1: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -1418,3 +1977,40 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.compute: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_compute_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_image_name: + type: string + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_compute_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_flavor_name: + type: string + required: true + status: SUPPORTED + compute_compute_config_drive: + type: list + required: true + status: SUPPORTED + entry_schema: + type: boolean
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/twoNestedNodeTemplatesWithSameComputeType/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/twoNestedNodeTemplatesWithSameComputeType/out/MainServiceTemplate.yaml index 6f0bd1ea94..beb20a352c 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/twoNestedNodeTemplatesWithSameComputeType/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/nestedSingleCompute/twoNestedNodeTemplatesWithSameComputeType/out/MainServiceTemplate.yaml @@ -91,6 +91,29 @@ topology_template: get_input: - pcm_server_names - 0 + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo server_pcm_001: type: org.openecomp.resource.abstract.nodes.heat.pcm_server directives: @@ -128,6 +151,29 @@ topology_template: get_input: - pcm_server_names - 0 + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo compute_port_0: type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port properties: diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePort/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePort/out/GlobalSubstitutionTypesServiceTemplate.yaml index a1c235a298..2e14ee9846 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePort/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePort/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,91 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -425,4 +510,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml index d5852c9cff..b5e55a5623 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,101 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + pd_server_accessIPv6: + type: string + status: SUPPORTED + pd_server_accessIPv4: + type: string + status: SUPPORTED + pd_server_pd01_port_device_owner: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -435,4 +530,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrOut/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrOut/out/GlobalSubstitutionTypesServiceTemplate.yaml index d4331dac27..3748b68737 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrOut/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrOut/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,97 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_metadata: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -431,4 +522,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrOutComputePort/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrOutComputePort/out/GlobalSubstitutionTypesServiceTemplate.yaml index 712c687aad..aebc6c72fb 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrOutComputePort/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortGetAttrOutComputePort/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,79 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -413,4 +486,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml index 0d04a1e8fc..5d5d094d71 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,97 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -431,4 +522,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml index a1c235a298..2e14ee9846 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,91 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -425,4 +510,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedOut/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedOut/out/MainServiceTemplate.yaml index 62c9c11383..1f6dafb872 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedOut/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortNodeConnectedOut/out/MainServiceTemplate.yaml @@ -119,10 +119,18 @@ topology_template: capability: tosca.capabilities.Node node: packet_mirror_network relationship: tosca.relationships.DependsOn + - dependency_server_pd_02_pd_server: + capability: tosca.capabilities.Node + node: packet_mirror_network + relationship: tosca.relationships.DependsOn - link_pd_server_pd01_port: capability: tosca.capabilities.network.Linkable node: packet_mirror_network relationship: tosca.relationships.network.LinksTo + - dependency_server_pd_01_pd_server: + capability: tosca.capabilities.Node + node: packet_mirror_network + relationship: tosca.relationships.DependsOn - local_storage_pd_server: capability: tosca.capabilities.Attachment node: pd01_volume @@ -151,4 +159,4 @@ topology_template: members: - packet_mirror_network - pd01_volume - - abstract_pd_server + - abstract_pd_server
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortOneGroup/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortOneGroup/out/GlobalSubstitutionTypesServiceTemplate.yaml index ddf141a6e9..c60f5dcb37 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortOneGroup/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortOneGroup/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,97 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_pd_server_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -431,4 +522,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortOutputParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortOutputParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml index de1531b142..a8ec60b3e4 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortOutputParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortOutputParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,101 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + pd_server_accessIPv6: + type: string + status: SUPPORTED + pd_server_accessIPv4: + type: string + status: SUPPORTED + pd_server_pd01_port_device_id: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -435,4 +530,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePort/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePort/out/GlobalSubstitutionTypesServiceTemplate.yaml index ef0e8f7dba..2355f5d3ab 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePort/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePort/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,91 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -426,6 +511,91 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.ps_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_ps_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_ps01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + compute_ps_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_ps_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_ps01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_ps01_port_order: + type: integer + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_ps01_port_network_role: + type: string + required: true + status: SUPPORTED + port_ps01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_ps01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_ps01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_ps01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_ps01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_ps01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED org.openecomp.resource.abstract.nodes.ps_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -846,4 +1016,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePortWithGetAttr/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePortWithGetAttr/out/GlobalSubstitutionTypesServiceTemplate.yaml index 8e61b49e92..7aedccc595 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePortWithGetAttr/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePortWithGetAttr/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,95 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + pd_server_accessIPv4: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -430,6 +519,95 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.ps_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_ps_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_ps01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + compute_ps_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_ps_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_ps01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_ps01_port_order: + type: integer + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_ps01_port_network_role: + type: string + required: true + status: SUPPORTED + port_ps01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_ps01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_ps01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_ps01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_ps01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_ps01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + attributes: + ps_server_accessIPv4: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.ps_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -854,4 +1032,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortType/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortType/out/GlobalSubstitutionTypesServiceTemplate.yaml index b484bfb791..251c8ab448 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortType/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortType/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,127 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd02_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd02_port_order: + type: integer + required: true + status: SUPPORTED + port_pd02_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd02_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd02_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd02_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd02_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -539,4 +660,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeAndServerGroup/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeAndServerGroup/out/GlobalSubstitutionTypesServiceTemplate.yaml index b88f5d84f4..9ff132bd99 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeAndServerGroup/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeAndServerGroup/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,103 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.smp: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_smp_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_smp_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_port_network_role_tag: + type: string + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + compute_smp_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_port_network_role: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + compute_smp_metadata: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_port_order: + type: integer + required: true + status: SUPPORTED + compute_smp_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json org.openecomp.resource.abstract.nodes.smp: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -437,4 +534,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml index 087649ff59..7f623815f8 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,151 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_pd02_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd02_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd02_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_pd02_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd02_port_order: + type: integer + required: true + status: SUPPORTED + port_pd02_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd02_port_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd02_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd02_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -563,4 +708,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml index 9be0ebfb48..4946303346 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,139 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd02_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd02_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd02_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_pd02_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd02_port_order: + type: integer + required: true + status: SUPPORTED + port_pd02_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd02_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd02_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -551,4 +684,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedOut/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedOut/out/MainServiceTemplate.yaml index 482b76338e..81e04e2615 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedOut/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedOut/out/MainServiceTemplate.yaml @@ -143,6 +143,10 @@ topology_template: capability: tosca.capabilities.Node node: packet_mirror_network relationship: tosca.relationships.DependsOn + - dependency_server_pd_01_pd_server: + capability: tosca.capabilities.Node + node: packet_mirror_network + relationship: tosca.relationships.DependsOn - link_pd_server_pd01_port: capability: tosca.capabilities.network.Linkable node: packet_mirror_network @@ -170,4 +174,4 @@ topology_template: members: - packet_mirror_network - pd01_volume - - abstract_pd_server + - abstract_pd_server
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml index 3bdd9e6fc1..93cc747530 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedIn/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,151 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pd01_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_0_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_1_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_pd01_port_0_network_role: + type: string + required: true + status: SUPPORTED + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_0_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_pd01_port_1_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd01_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_1_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd01_port_0_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -563,4 +708,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml index 50a0b6a382..68c0f122c0 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedOut/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,139 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pd01_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_0_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_0_network_role: + type: string + required: true + status: SUPPORTED + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_0_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_pd01_port_1_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd01_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_1_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -551,4 +684,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedOut/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedOut/out/MainServiceTemplate.yaml index 5931d1278c..210b537179 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedOut/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedOut/out/MainServiceTemplate.yaml @@ -154,6 +154,10 @@ topology_template: capability: tosca.capabilities.Node node: packet_mirror_network relationship: tosca.relationships.DependsOn + - dependency_server_pd_01_pd_server: + capability: tosca.capabilities.Node + node: packet_mirror_network + relationship: tosca.relationships.DependsOn - link_pd_server_pd01_port_0: capability: tosca.capabilities.network.Linkable node: packet_mirror_network @@ -182,4 +186,4 @@ topology_template: - packet_mirror_network - pd01_volume - packet_internal_network - - abstract_pd_server + - abstract_pd_server
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwodiffporttypesandnested/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwodiffporttypesandnested/out/GlobalSubstitutionTypesServiceTemplate.yaml index 023b48b2a7..7d50dbc153 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwodiffporttypesandnested/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwodiffporttypesandnested/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,127 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd02_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd02_port_order: + type: integer + required: true + status: SUPPORTED + port_pd02_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd02_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd02_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd02_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd02_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -1136,3 +1257,599 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.pcm_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pcm_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + availabilityzone_name: + type: string + description: availabilityzone name + required: true + status: SUPPORTED + port_pcm_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_image_name: + type: string + description: PCRF CM image name + required: true + status: SUPPORTED + cps_net_ips: + type: string + description: CPS network ip + required: true + status: SUPPORTED + port_pcm_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pcm_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + pcm_server_name: + type: string + description: PCRF CM server name + required: true + status: SUPPORTED + cps_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pcm_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + oam_net_name: + type: string + description: OAM network name + required: true + status: SUPPORTED + port_pcm_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pcm_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + oam_net_gw: + type: string + description: CPS network gateway + required: true + status: SUPPORTED + security_group_name: + type: string + description: the name of security group + required: true + status: SUPPORTED + cps_net_ip: + type: string + description: CPS network ip + required: true + status: SUPPORTED + port_pcm_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + pcm_volumes: + type: string + description: CPS Cluman Cinder Volume + required: true + status: SUPPORTED + port_pcm_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + pcm_flavor_name: + type: string + description: flavor name of PCRF CM instance + required: true + status: SUPPORTED + pcm_vol: + type: string + description: CPS Cluman Cinder Volume + required: true + status: SUPPORTED + port_pcm_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pcm_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + cps_net_name: + type: string + description: CPS network name + required: true + status: SUPPORTED + oam_net_ip: + type: string + description: OAM network ip + required: true + status: SUPPORTED + oam_net_mask: + type: string + description: CPS network mask + required: true + status: SUPPORTED + port_pcm_port_1_order: + type: integer + required: true + status: SUPPORTED + attributes: + server_pcm_id: + type: string + description: the pcm nova service id + status: SUPPORTED + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + occurrences: + - 1 + - 1 + - dependency_network: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + capabilities: + network.incoming.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + memory.resident_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.root.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.ephemeral.size_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_pcm_port_0: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + binding_pcm_port_1: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + memory.usage_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + link_network: + type: tosca.capabilities.network.Linkable + occurrences: + - 1 + - UNBOUNDED + disk.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + os_server_pcm: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_1: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_pcm_port_0: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_0: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + attachment_pcm_port_1: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + endpoint_server_pcm: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + end_point_network: + type: tosca.capabilities.Endpoint + occurrences: + - 1 + - UNBOUNDED + vcpus_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + attachment_network: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.iops_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + scalable_server_pcm: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + feature_network: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + cpu_util_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + host_server_pcm: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + occurrences: + - 1 + - UNBOUNDED + cpu.delta_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + binding_server_pcm: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + instance_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.latency_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + feature_server_pcm: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_0: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate_server_pcm: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate_pcm_port_1: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwodiffporttypesandnested/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwodiffporttypesandnested/out/MainServiceTemplate.yaml index a6938c23d8..b9c5bc8be0 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwodiffporttypesandnested/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwodiffporttypesandnested/out/MainServiceTemplate.yaml @@ -450,6 +450,33 @@ topology_template: port_pcm_port_0_mac_requirements: mac_count_required: is_required: false + requirements: + - dependency_pcm_port_1: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_1: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_server_pcm: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - local_storage_server_pcm: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + - dependency_pcm_port_0: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_pcm_port_0: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - dependency_network: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn abstract_pd_server: type: org.openecomp.resource.abstract.nodes.pd_server directives: @@ -507,4 +534,4 @@ topology_template: description: heat template that creates MOG stack members: - server_pcm_003 - - abstract_pd_server + - abstract_pd_server
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwosameporttypes/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwosameporttypes/out/GlobalSubstitutionTypesServiceTemplate.yaml index 5278a654c0..2604672e9c 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwosameporttypes/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwosameporttypes/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,127 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pd01_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_0_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_1_order: + type: integer + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd01_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd01_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -539,4 +660,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/diffPortTypeAndOutParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/diffPortTypeAndOutParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml index e68bf0fb94..d433390469 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/diffPortTypeAndOutParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/diffPortTypeAndOutParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,137 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd02_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd02_port_order: + type: integer + required: true + status: SUPPORTED + port_pd02_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd02_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd02_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd02_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd02_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + pd_server_accessIPv4: + type: string + status: SUPPORTED + pd_server_pd02_port_device_owner: + type: string + status: SUPPORTED + pd_server_pd01_port_device_id: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -549,4 +680,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/inputOutputParamType/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/inputOutputParamType/out/GlobalSubstitutionTypesServiceTemplate.yaml index 6f8a16604a..839624153b 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/inputOutputParamType/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/inputOutputParamType/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,423 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_pd_server_key_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_replacement_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_personality: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_pd_server_image_update_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_template_VMInt_OAM_lb_virtual_machine_interface_properties: + type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.interface.Properties + required: true + status: SUPPORTED + port_pd01_port_device_id: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_admin_state_up: + type: list + required: true + status: SUPPORTED + entry_schema: + type: boolean + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_metadata: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_template_VMInt_OAM_lb_subnetpoolid: + type: string + required: true + status: SUPPORTED + compute_pd_server_diskConfig: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_mac_address: + type: string + required: true + status: SUPPORTED + port_template_VMInt_OAM_lb_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_allowed_address_pairs: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.AddressPair + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + compute_pd_server_admin_pass: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_flavor_update_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_template_VMInt_OAM_lb_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_template_VMInt_OAM_lb_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_template_VMInt_OAM_lb_virtual_machine_interface_allowed_address_pairs: + type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs + required: true + status: SUPPORTED + port_pd01_port_value_specs: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_pd_server_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_template_VMInt_OAM_lb_port_tuple_refs: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + compute_pd_server_software_config_transport: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + compute_pd_server_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_pd01_port_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_contrail_service_instance_ind: + type: list + required: true + status: SUPPORTED + entry_schema: + type: boolean + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_template_VMInt_OAM_lb_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_binding:vnic_type: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_device_owner: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_fixed_ips: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_qos_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_config_drive: + type: list + required: true + status: SUPPORTED + entry_schema: + type: boolean + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_template_VMInt_OAM_lb_virtual_network_refs: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_template_VMInt_OAM_lb_order: + type: integer + required: true + status: SUPPORTED + port_template_VMInt_OAM_lb_virtual_machine_interface_mac_addresses: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_template_VMInt_OAM_lb_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_port_security_enabled: + type: list + required: true + status: SUPPORTED + entry_schema: + type: boolean + port_template_VMInt_OAM_lb_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_update_policy: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_reservation_id: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_template_VMInt_OAM_lb_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_template_VMInt_OAM_lb_security_group_refs: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + attributes: + pd_server_pd01_port_allowed_address_pairs: + type: list + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.AddressPair + pd_server_template_VMInt_OAM_lb_virtual_machine_interface_mac_addresses: + type: list + status: SUPPORTED + entry_schema: + type: string + pd_server_template_VMInt_OAM_lb_virtual_network_refs: + type: list + status: SUPPORTED + entry_schema: + type: string + pd_server_template_VMInt_OAM_lb_fq_name: + type: string + status: SUPPORTED + pd_server_show: + type: string + status: SUPPORTED + pd_server_console_urls: + type: string + status: SUPPORTED + pd_server_template_VMInt_OAM_lb_virtual_machine_interface_allowed_address_pairs: + type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs + status: SUPPORTED + pd_server_pd01_port_security_groups: + type: list + status: SUPPORTED + entry_schema: + type: string + pd_server_pd01_port_port_security_enabled: + type: boolean + status: SUPPORTED + pd_server_pd01_port_status: + type: string + status: SUPPORTED + pd_server_template_VMInt_OAM_lb_port_tuple_refs: + type: list + status: SUPPORTED + entry_schema: + type: string + pd_server_pd01_port_fixed_ips: + type: list + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + pd_server_accessIPv6: + type: string + status: SUPPORTED + pd_server_pd01_port_admin_state_up: + type: boolean + status: SUPPORTED + pd_server_instance_name: + type: string + status: SUPPORTED + pd_server_template_VMInt_OAM_lb_name: + type: string + status: SUPPORTED + pd_server_accessIPv4: + type: string + status: SUPPORTED + pd_server_pd01_port_device_owner: + type: string + status: SUPPORTED + pd_server_pd01_port_show: + type: string + status: SUPPORTED + pd_server_pd01_port_network: + type: string + status: SUPPORTED + pd_server_pd01_port_qos_policy: + type: string + status: SUPPORTED + pd_server_pd01_port_mac_address: + type: string + status: SUPPORTED + pd_server_addresses: + type: map + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.novaServer.network.AddressInfo + pd_server_pd01_port_tenant_id: + type: string + status: SUPPORTED + pd_server_template_VMInt_OAM_lb_virtual_machine_interface_properties: + type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.interface.Properties + status: SUPPORTED + pd_server_pd01_port_device_id: + type: string + status: SUPPORTED + pd_server_pd01_port_name: + type: string + status: SUPPORTED + pd_server_template_VMInt_OAM_lb_show: + type: string + status: SUPPORTED + pd_server_pd01_port_subnets: + type: list + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -830,4 +1247,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttIn/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttIn/out/GlobalSubstitutionTypesServiceTemplate.yaml index 31466870a4..afcc75b7ea 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttIn/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttIn/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,134 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd02_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd02_port_order: + type: integer + required: true + status: SUPPORTED + port_pd02_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd02_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd02_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd02_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd02_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + pd_server_accessIPv4: + type: string + status: SUPPORTED + pd_server_pd01_port_device_owner: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -546,4 +674,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttOut/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttOut/out/GlobalSubstitutionTypesServiceTemplate.yaml index b484bfb791..251c8ab448 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttOut/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttOut/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,127 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd02_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd02_port_order: + type: integer + required: true + status: SUPPORTED + port_pd02_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd02_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd02_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd02_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd02_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd02_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -539,4 +660,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortTypesAndGetAttOut/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortTypesAndGetAttOut/out/GlobalSubstitutionTypesServiceTemplate.yaml index 5278a654c0..2604672e9c 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortTypesAndGetAttOut/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortTypesAndGetAttOut/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,127 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pd01_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_0_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_1_order: + type: integer + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd01_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd01_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -539,4 +660,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortsAndGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortsAndGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml index deb8b3db25..b80d23fc00 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortsAndGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortsAndGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,137 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pd01_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_0_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_1_order: + type: integer + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd01_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd01_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + pd_server_accessIPv4: + type: string + status: SUPPORTED + pd_server_pd01_port_1_device_owner: + type: string + status: SUPPORTED + pd_server_pd01_port_0_device_owner: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -549,4 +680,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/samePortTypeAndOutParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/samePortTypeAndOutParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml index 3cf557e3a7..69208ef3ca 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/samePortTypeAndOutParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/samePortTypeAndOutParamGetAttrIn/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,137 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pd01_port_0_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_0_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_0_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_0_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_1_order: + type: integer + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_1_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_1_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd01_port_1_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_1_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_1_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_0_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd01_port_0_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_1_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + pd_server_pd01_port_0_device_id: + type: string + status: SUPPORTED + pd_server_accessIPv4: + type: string + status: SUPPORTED + pd_server_pd01_port_1_device_owner: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -549,4 +680,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithAllConnectivities/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithAllConnectivities/out/GlobalSubstitutionTypesServiceTemplate.yaml index 242eb47cbc..2ec44ccb44 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithAllConnectivities/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithAllConnectivities/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,104 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_pd_server_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + pd_server_accessIPv4: + type: string + status: SUPPORTED + pd_server_pd01_port_device_owner: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -439,6 +537,104 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.ps_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_ps_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_ps_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_ps_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_ps_server_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + attributes: + ps_server_accessIPv4: + type: string + status: SUPPORTED + ps_server_pd01_port_device_id: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.oam_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -1304,3 +1500,98 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.oam_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_security_groups: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + compute_oam_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + compute_oam_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_oam_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_oam_server_scheduler_hints: + type: list + required: true + status: SUPPORTED + entry_schema: + type: json + attributes: + oam_server_accessIPv4: + type: string + status: SUPPORTED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithAllConnectivities/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithAllConnectivities/out/MainServiceTemplate.yaml index 82259a7a1a..abe0e1701a 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithAllConnectivities/out/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithAllConnectivities/out/MainServiceTemplate.yaml @@ -245,6 +245,10 @@ topology_template: capability: tosca.capabilities.Node node: packet_mirror_network relationship: tosca.relationships.DependsOn + - dependency_server_pd_01_pd_server: + capability: tosca.capabilities.Node + node: packet_mirror_network + relationship: tosca.relationships.DependsOn abstract_ps_server: type: org.openecomp.resource.abstract.nodes.ps_server directives: @@ -294,6 +298,10 @@ topology_template: capability: tosca.capabilities.Node node: packet_mirror_network relationship: tosca.relationships.DependsOn + - dependency_server_ps_01_ps_server: + capability: tosca.capabilities.Node + node: packet_mirror_network + relationship: tosca.relationships.DependsOn abstract_oam_server: type: org.openecomp.resource.abstract.nodes.oam_server directives: @@ -342,6 +350,10 @@ topology_template: capability: tosca.capabilities.Node node: packet_mirror_network relationship: tosca.relationships.DependsOn + - dependency_server_oam_01_oam_server: + capability: tosca.capabilities.Node + node: packet_mirror_network + relationship: tosca.relationships.DependsOn network_policy_server_ps: type: org.openecomp.resource.vfc.rules.nodes.heat.network.contrail.NetworkRules properties: @@ -469,4 +481,4 @@ topology_template: name: def affinity: host targets: - - BE_Affinity_group + - BE_Affinity_group
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithPorts/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithPorts/out/GlobalSubstitutionTypesServiceTemplate.yaml index ca9a33c87d..186a086f4b 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithPorts/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithPorts/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,85 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -420,6 +499,85 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.ps_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_ps_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_ps_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_ps_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements org.openecomp.resource.abstract.nodes.oam_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -1250,3 +1408,82 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.oam_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + compute_oam_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + compute_oam_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_oam_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeNovaSameTypeWithGetAttrFromPort/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeNovaSameTypeWithGetAttrFromPort/out/GlobalSubstitutionTypesServiceTemplate.yaml index 8a723e741d..b4bd1e21a5 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeNovaSameTypeWithGetAttrFromPort/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeNovaSameTypeWithGetAttrFromPort/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,85 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -1237,4 +1316,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeSameComputesNoConsolidation/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeSameComputesNoConsolidation/out/GlobalSubstitutionTypesServiceTemplate.yaml index 892749544e..40180ddccb 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeSameComputesNoConsolidation/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/threeSameComputesNoConsolidation/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,127 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + port_pd01_port_2_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_3_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_3_order: + type: integer + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_pd01_port_2_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_2_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_3_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_3_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_3_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_2_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_2_subnetpoolid: + type: string + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_3_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_2_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_3_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_pd01_port_2_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_pd01_port_2_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + port_pd01_port_3_network_role_tag: + type: string + required: true + status: SUPPORTED + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_2_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_3_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -1369,4 +1490,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/twoComputesWithGetAttrBetweenThem/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/twoComputesWithGetAttrBetweenThem/out/GlobalSubstitutionTypesServiceTemplate.yaml index 0521146745..3a228ed1cd 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/twoComputesWithGetAttrBetweenThem/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/twoComputesWithGetAttrBetweenThem/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,89 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + attributes: + pd_server_accessIPv4: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -424,6 +507,89 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.ps_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_ps_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_ps01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + compute_ps_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_ps_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_ps01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_ps01_port_order: + type: integer + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_ps01_port_network_role: + type: string + required: true + status: SUPPORTED + port_ps01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_ps01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_ps01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_ps01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_ps01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + attributes: + ps_server_accessIPv4: + type: string + status: SUPPORTED org.openecomp.resource.abstract.nodes.ps_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -842,4 +1008,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/twoSetsOfSingle/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/twoSetsOfSingle/out/GlobalSubstitutionTypesServiceTemplate.yaml index 8080962bc4..b173806b0f 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/twoSetsOfSingle/out/GlobalSubstitutionTypesServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/singleSubstitution/twoSetsOfSingle/out/GlobalSubstitutionTypesServiceTemplate.yaml @@ -5,6 +5,85 @@ imports: - openecomp_heat_index: file: openecomp-heat/_index.yml node_types: + org.openecomp.resource.vfc.nodes.heat.pd_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + compute_pd_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_pd_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_pd01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_pd01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_pd01_port_order: + type: integer + required: true + status: SUPPORTED + port_pd01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role: + type: string + required: true + status: SUPPORTED + port_pd01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_pd01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + compute_pd_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string org.openecomp.resource.abstract.nodes.pd_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -420,6 +499,85 @@ node_types: occurrences: - 1 - UNBOUNDED + org.openecomp.resource.vfc.nodes.heat.ps_server: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + compute_ps_server_name: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_ps01_port_subnetpoolid: + type: string + required: true + status: SUPPORTED + compute_ps_server_availability_zone: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + compute_ps_server_user_data_format: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + index_value: + type: integer + description: Index value of this substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + port_ps01_port_vlan_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + vm_flavor_name: + type: string + required: true + status: SUPPORTED + port_ps01_port_order: + type: integer + required: true + status: SUPPORTED + vm_image_name: + type: string + required: true + status: SUPPORTED + port_ps01_port_network_role: + type: string + required: true + status: SUPPORTED + port_ps01_port_mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: true + status: SUPPORTED + port_ps01_port_network: + type: list + required: true + status: SUPPORTED + entry_schema: + type: string + port_ps01_port_ip_requirements: + type: list + required: true + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_ps01_port_network_role_tag: + type: string + required: true + status: SUPPORTED + port_ps01_port_exCP_naming: + type: org.openecomp.datatypes.Naming + required: true + status: SUPPORTED org.openecomp.resource.abstract.nodes.ps_server: derived_from: org.openecomp.resource.abstract.nodes.VFC properties: @@ -834,4 +992,4 @@ node_types: description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. occurrences: - 1 - - UNBOUNDED + - UNBOUNDED
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/in/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/in/MainServiceTemplate.yaml index d007e85493..5d7542f1a4 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/in/MainServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/in/MainServiceTemplate.yaml @@ -110,7 +110,7 @@ topology_template: type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port properties: network: Internal2-net - device_id: {get_attribute: [FSB2_template, device_id]} + device_id: {get_attribute: [FSB2_template, att]} requirements: - binding: capability: tosca.capabilities.network.Bindable @@ -131,7 +131,7 @@ topology_template: properties: mac_address: get_input: fsb1-Internal1-mac - network: {get_attribute: [FSB2_Internal1, device_id]} + network: {get_attribute: [FSB2_Internal1, att]} requirements: - binding: capability: tosca.capabilities.network.Bindable @@ -146,7 +146,7 @@ topology_template: properties: mac_address: get_input: fsb1-Internal1-mac - network: {get_attribute: [FSB2_Internal1, device_id]} + network: {get_attribute: [FSB2_Internal1, att]} requirements: - binding: capability: tosca.capabilities.network.Bindable diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/out/SubstitutionServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/out/SubstitutionServiceTemplate.yaml index e4fa28737d..9a9b57d6a9 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/out/SubstitutionServiceTemplate.yaml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/out/SubstitutionServiceTemplate.yaml @@ -126,7 +126,7 @@ topology_template: network: get_attribute: - FSB1_FSB2_Internal - - device_id + - att mac_address: get_input: port_FSB1_Internal_mac_address requirements: @@ -156,7 +156,7 @@ topology_template: device_id: get_attribute: - FSB1 - - device_id + - att network: get_input: - port_FSB2_Internal_network diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/src/main/java/org/openecomp/sdc/vendorlicense/dao/types/LimitEntity.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/src/main/java/org/openecomp/sdc/vendorlicense/dao/types/LimitEntity.java index e40b2988b3..58ccd5e608 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/src/main/java/org/openecomp/sdc/vendorlicense/dao/types/LimitEntity.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/src/main/java/org/openecomp/sdc/vendorlicense/dao/types/LimitEntity.java @@ -20,6 +20,9 @@ public class LimitEntity implements VersionableEntity { private String unit; private AggregationFunction aggregationFunction; private String time; + //Defined and used only to find parent(EP/LKG) of Limit. Not to be persisted in DB and License + // Xmls + private String parent; public LimitEntity() { } @@ -44,7 +47,7 @@ public class LimitEntity implements VersionableEntity { } public void setAggregationFunction( - AggregationFunction aggregationFunction) { + AggregationFunction aggregationFunction) { this.aggregationFunction = aggregationFunction; } @@ -143,10 +146,20 @@ public class LimitEntity implements VersionableEntity { this.value = value; } - @Override + //Defined and used only to find parent(EP/LKG) of Limit. Not to be persisted in DB and License + // Xmls + public String getParent() { + return parent; + } + + public void setParent(String parent) { + this.parent = parent; + } + + @Override public int hashCode() { return Objects.hash(vendorLicenseModelId, version, epLkgId, id, name, description, type, - metric, unit, time, aggregationFunction, value); + metric, unit, time, aggregationFunction, value); } @Override @@ -159,35 +172,35 @@ public class LimitEntity implements VersionableEntity { } LimitEntity that = (LimitEntity) obj; return Objects.equals(that.unit, unit) - && Objects.equals(that.value, value) - && Objects.equals(vendorLicenseModelId, that.vendorLicenseModelId) - && Objects.equals(epLkgId, that.epLkgId) - && Objects.equals(id, that.id) - && Objects.equals(name, that.name) - && Objects.equals(description, that.description) - && Objects.equals(type, that.type) - && Objects.equals(metric, that.metric) - && Objects.equals(aggregationFunction, that.aggregationFunction); + && Objects.equals(that.value, value) + && Objects.equals(vendorLicenseModelId, that.vendorLicenseModelId) + && Objects.equals(epLkgId, that.epLkgId) + && Objects.equals(id, that.id) + && Objects.equals(name, that.name) + && Objects.equals(description, that.description) + && Objects.equals(type, that.type) + && Objects.equals(metric, that.metric) + && Objects.equals(aggregationFunction, that.aggregationFunction); } @Override public String toString() { return "LimitEntity{" - + "vendorLicenseModelId='" + vendorLicenseModelId + '\'' - + ", version=" + version - + ", epLkgId=" + epLkgId - + ", id='" + id + '\'' - + ", name='" + name + '\'' - + ", description='" + description + '\'' - + ", type=" + type - + ", metric=" + metric - + ", value='" + value + '\'' - + ", unit='" + unit + '\'' - + ", aggregationFunction=" + aggregationFunction - + ", time=" + time - - + '}'; + + "vendorLicenseModelId='" + vendorLicenseModelId + '\'' + + ", version=" + version + + ", epLkgId=" + epLkgId + + ", id='" + id + '\'' + + ", name='" + name + '\'' + + ", description='" + description + '\'' + + ", type=" + type + + ", metric=" + metric + + ", value='" + value + '\'' + + ", unit='" + unit + '\'' + + ", aggregationFunction=" + aggregationFunction + + ", time=" + time + + + '}'; } } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/src/main/java/org/openecomp/sdc/vendorlicense/healing/HealingService.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/src/main/java/org/openecomp/sdc/vendorlicense/healing/HealingService.java index 027cb1e5be..6ae2de1a63 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/src/main/java/org/openecomp/sdc/vendorlicense/healing/HealingService.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/src/main/java/org/openecomp/sdc/vendorlicense/healing/HealingService.java @@ -24,8 +24,9 @@ import org.openecomp.sdc.versioning.dao.types.VersionableEntity; public interface HealingService { - // VersionableEntity heal(VersionableEntity toHeal, String user); VersionableEntity heal(VersionableEntity toHeal, String user); + + void persistNoHealing(VersionableEntity alreadyHealed); } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/healing/impl/SimpleHealingServiceImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/healing/impl/SimpleHealingServiceImpl.java index eeed3b069d..7cb3e2e844 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/healing/impl/SimpleHealingServiceImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/healing/impl/SimpleHealingServiceImpl.java @@ -20,7 +20,6 @@ package org.openecomp.sdc.vendorlicense.healing.impl; -import org.openecomp.sdc.common.utils.CommonUtil; import org.openecomp.sdc.datatypes.error.ErrorLevel; import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage; import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage; @@ -41,9 +40,9 @@ import java.util.UUID; public class SimpleHealingServiceImpl implements HealingService { private static final EntitlementPoolDao entitlementPoolDao = - EntitlementPoolDaoFactory.getInstance().createInterface(); + EntitlementPoolDaoFactory.getInstance().createInterface(); private static final LicenseKeyGroupDao licenseKeyGroupDao = - LicenseKeyGroupDaoFactory.getInstance().createInterface(); + LicenseKeyGroupDaoFactory.getInstance().createInterface(); private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); @Override @@ -51,6 +50,15 @@ public class SimpleHealingServiceImpl implements HealingService { return handleMissingVersionId(toHeal, user); } + @Override + public void persistNoHealing(VersionableEntity alreadyHealed) { + if (alreadyHealed instanceof EntitlementPoolEntity) { + entitlementPoolDao.update((EntitlementPoolEntity) alreadyHealed); + } else if (alreadyHealed instanceof LicenseKeyGroupEntity) { + licenseKeyGroupDao.update((LicenseKeyGroupEntity) alreadyHealed); + } + } + private VersionableEntity handleMissingVersionId(VersionableEntity toHeal, String user) { @@ -68,11 +76,10 @@ public class SimpleHealingServiceImpl implements HealingService { licenseKeyGroupDao.update((LicenseKeyGroupEntity) toHeal); } else { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.SELF_HEALING, ErrorLevel.ERROR.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.UNSUPPORTED_OPERATION); + LoggerTragetServiceName.SELF_HEALING, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.UNSUPPORTED_OPERATION); throw new UnsupportedOperationException( - "Unsupported operation for 1610 release/1607->1610 migration."); - //todo maybe errorbuilder? + "Unsupported operation for 1610 release/1607->1610 migration."); } mdcDataDebugMessage.debugExitMessage(null, null); diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/VendorLicenseArtifactsServiceImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/VendorLicenseArtifactsServiceImpl.java index 7d2cdc5474..282b4e6743 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/VendorLicenseArtifactsServiceImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/VendorLicenseArtifactsServiceImpl.java @@ -22,21 +22,18 @@ package org.openecomp.sdc.vendorlicense.licenseartifacts.impl; import org.apache.commons.collections.CollectionUtils; import org.openecomp.core.utilities.file.FileContentHandler; -import org.openecomp.sdc.common.utils.CommonUtil; import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage; import org.openecomp.sdc.vendorlicense.HealingServiceFactory; import org.openecomp.sdc.vendorlicense.dao.types.EntitlementPoolEntity; import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupEntity; import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupModel; import org.openecomp.sdc.vendorlicense.dao.types.LicenseKeyGroupEntity; -import org.openecomp.sdc.vendorlicense.dao.types.LimitEntity; import org.openecomp.sdc.vendorlicense.facade.VendorLicenseFacade; import org.openecomp.sdc.vendorlicense.facade.VendorLicenseFacadeFactory; import org.openecomp.sdc.vendorlicense.healing.HealingService; import org.openecomp.sdc.vendorlicense.licenseartifacts.VendorLicenseArtifactsService; import org.openecomp.sdc.vendorlicense.licenseartifacts.impl.types.VendorLicenseArtifact; import org.openecomp.sdc.vendorlicense.licenseartifacts.impl.types.VnfLicenseArtifact; -import org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils; import org.openecomp.sdc.versioning.dao.types.Version; import java.util.Collection; @@ -48,18 +45,25 @@ import java.util.stream.Collectors; import static org.openecomp.sdc.vendorlicense.VendorLicenseConstants.VENDOR_LICENSE_MODEL_ARTIFACT_NAME_WITH_PATH; import static org.openecomp.sdc.vendorlicense.VendorLicenseConstants.VNF_ARTIFACT_NAME_WITH_PATH; +import static org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils.filterChangedEntities; +import static org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils.getFinalVersionsForVlm; +import static org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils.getVendorName; +import static org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils.healEPs; +import static org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils.healLkgs; +import static org.openecomp.sdc.vendorlicense.licenseartifacts.impl.util.VendorLicenseArtifactsServiceUtils.prepareForFiltering; public class VendorLicenseArtifactsServiceImpl implements VendorLicenseArtifactsService { public static final VendorLicenseFacade vendorLicenseFacade = - VendorLicenseFacadeFactory.getInstance().createInterface(); + VendorLicenseFacadeFactory.getInstance().createInterface(); public static final HealingService healingService = - HealingServiceFactory.getInstance().createInterface(); + HealingServiceFactory.getInstance().createInterface(); private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); - static byte[] createVnfArtifact(String vspId, String vlmId, Version vlmVersion, String vendorName, - List<String> featureGroups, String user) { + private static byte[] createVnfArtifact(String vspId, String vlmId, Version vlmVersion, + String vendorName, + List<String> featureGroups, String user) { mdcDataDebugMessage.debugEntryMessage("VLM name", vendorName); @@ -68,31 +72,33 @@ public class VendorLicenseArtifactsServiceImpl implements VendorLicenseArtifacts artifact.setVspId(vspId); artifact.setVendorName(vendorName); - if(featureGroups != null) { + if (featureGroups != null) { for (String featureGroupId : featureGroups) { FeatureGroupModel featureGroupModel = vendorLicenseFacade - .getFeatureGroupModel(new FeatureGroupEntity(vlmId, vlmVersion, featureGroupId), user); - Set<EntitlementPoolEntity> entitlementPoolEntities = featureGroupModel.getEntitlementPools(); - for(EntitlementPoolEntity entitlementPoolEntity : entitlementPoolEntities){ + .getFeatureGroupModel(new FeatureGroupEntity(vlmId, vlmVersion, featureGroupId), user); + Set<EntitlementPoolEntity> entitlementPoolEntities = + featureGroupModel.getEntitlementPools(); + for (EntitlementPoolEntity entitlementPoolEntity : entitlementPoolEntities) { entitlementPoolEntity.setLimits(vendorLicenseFacade.listLimits(vlmId, vlmVersion, - entitlementPoolEntity.getId(), user)); + entitlementPoolEntity.getId(), user)); entitlementPoolEntity.setManufacturerReferenceNumber(featureGroupModel. - getEntityManufacturerReferenceNumber()); + getEntityManufacturerReferenceNumber()); } - Set<LicenseKeyGroupEntity> licenseKeyGroupEntities = featureGroupModel.getLicenseKeyGroups(); - for(LicenseKeyGroupEntity licenseKeyGroupEntity : licenseKeyGroupEntities){ + Set<LicenseKeyGroupEntity> licenseKeyGroupEntities = + featureGroupModel.getLicenseKeyGroups(); + for (LicenseKeyGroupEntity licenseKeyGroupEntity : licenseKeyGroupEntities) { licenseKeyGroupEntity.setLimits(vendorLicenseFacade.listLimits(vlmId, vlmVersion, - licenseKeyGroupEntity.getId(), user)); + licenseKeyGroupEntity.getId(), user)); licenseKeyGroupEntity.setManufacturerReferenceNumber(featureGroupModel. - getEntityManufacturerReferenceNumber()); + getEntityManufacturerReferenceNumber()); } featureGroupModel.setEntitlementPools(entitlementPoolEntities.stream().map( - entitlementPoolEntity -> (EntitlementPoolEntity) healingService - .heal(entitlementPoolEntity, user)).collect(Collectors.toSet())); + entitlementPoolEntity -> (EntitlementPoolEntity) healingService + .heal(entitlementPoolEntity, user)).collect(Collectors.toSet())); featureGroupModel.setLicenseKeyGroups(licenseKeyGroupEntities.stream().map( - licenseKeyGroupEntity -> (LicenseKeyGroupEntity) healingService - .heal(licenseKeyGroupEntity, user)).collect(Collectors.toSet())); + licenseKeyGroupEntity -> (LicenseKeyGroupEntity) healingService + .heal(licenseKeyGroupEntity, user)).collect(Collectors.toSet())); artifact.getFeatureGroups().add(featureGroupModel); } } @@ -101,7 +107,7 @@ public class VendorLicenseArtifactsServiceImpl implements VendorLicenseArtifacts return artifact.toXml().getBytes(); } - static byte[] createVendorLicenseArtifact(String vlmId, String vendorName, String user) { + private static byte[] createVendorLicenseArtifact(String vlmId, String vendorName, String user) { mdcDataDebugMessage.debugEntryMessage("VLM name", vendorName); @@ -111,43 +117,42 @@ public class VendorLicenseArtifactsServiceImpl implements VendorLicenseArtifacts Set<EntitlementPoolEntity> entitlementPoolEntities = new HashSet<>(); Set<LicenseKeyGroupEntity> licenseKeyGroupEntities = new HashSet<>(); - List<Version> finalVersions = VendorLicenseArtifactsServiceUtils.getFinalVersionsForVlm(vlmId); + List<Version> finalVersions = getFinalVersionsForVlm(vlmId); for (Version finalVersion : finalVersions) { Collection<EntitlementPoolEntity> coll = vendorLicenseFacade.listEntitlementPools(vlmId, - finalVersion, user); - coll.stream().forEach( entitlementPoolEntity -> { + finalVersion, user); + coll.stream().forEach(entitlementPoolEntity -> { entitlementPoolEntity.setLimits(vendorLicenseFacade.listLimits(vlmId, finalVersion, - entitlementPoolEntity.getId(), user)); + entitlementPoolEntity.getId(), user)); Optional<String> manufacturerReferenceNumber = getFeatureGroupManufactureRefNumber - (entitlementPoolEntity.getReferencingFeatureGroups(), vlmId, finalVersion, user); - manufacturerReferenceNumber.ifPresent(mrn -> entitlementPoolEntity - .setManufacturerReferenceNumber(mrn)); + (entitlementPoolEntity.getReferencingFeatureGroups(), vlmId, finalVersion, user); + manufacturerReferenceNumber + .ifPresent(entitlementPoolEntity::setManufacturerReferenceNumber); }); entitlementPoolEntities.addAll(coll); Collection<LicenseKeyGroupEntity> coll2 = vendorLicenseFacade.listLicenseKeyGroups(vlmId, - finalVersion, user); + finalVersion, user); - coll2.stream().forEach( licenseKeyGroupEntity -> { + coll2.stream().forEach(licenseKeyGroupEntity -> { licenseKeyGroupEntity.setLimits(vendorLicenseFacade.listLimits(vlmId, finalVersion, - licenseKeyGroupEntity.getId(), user)); + licenseKeyGroupEntity.getId(), user)); Optional<String> manufacturerReferenceNumber = getFeatureGroupManufactureRefNumber - (licenseKeyGroupEntity.getReferencingFeatureGroups(), vlmId, finalVersion, user); - manufacturerReferenceNumber.ifPresent(mrn -> licenseKeyGroupEntity - .setManufacturerReferenceNumber(mrn)); + (licenseKeyGroupEntity.getReferencingFeatureGroups(), vlmId, finalVersion, user); + manufacturerReferenceNumber + .ifPresent(licenseKeyGroupEntity::setManufacturerReferenceNumber); }); licenseKeyGroupEntities.addAll(coll2); } - entitlementPoolEntities = VendorLicenseArtifactsServiceUtils - .healEPs(user, - VendorLicenseArtifactsServiceUtils.filterChangedEntities(entitlementPoolEntities)); - licenseKeyGroupEntities = VendorLicenseArtifactsServiceUtils - .healLkgs(user, - VendorLicenseArtifactsServiceUtils.filterChangedEntities(licenseKeyGroupEntities)); - + entitlementPoolEntities = + healEPs(user, filterChangedEntities(prepareForFiltering(entitlementPoolEntities, user, + true))); + licenseKeyGroupEntities = + healLkgs(user, filterChangedEntities(prepareForFiltering(licenseKeyGroupEntities, user, + false))); vendorLicenseArtifact.setEntitlementPoolEntities(entitlementPoolEntities); vendorLicenseArtifact.setLicenseKeyGroupEntities(licenseKeyGroupEntities); @@ -156,30 +161,33 @@ public class VendorLicenseArtifactsServiceImpl implements VendorLicenseArtifacts } private static Optional<String> getFeatureGroupManufactureRefNumber(Set<String> featureGroupIds, - String vlmId, Version finalVersion, String user) { + String vlmId, + Version finalVersion, + String user) { String manufactureReferenceNumber = null; if (CollectionUtils.isNotEmpty(featureGroupIds)) { Object[] featureGroupIdsList = featureGroupIds.toArray(); - if (featureGroupIdsList != null && featureGroupIdsList.length > 0) { + if (featureGroupIdsList.length > 0) { FeatureGroupEntity featureGroup = - vendorLicenseFacade.getFeatureGroup(new FeatureGroupEntity(vlmId, finalVersion, - featureGroupIdsList[0].toString()), user); + vendorLicenseFacade.getFeatureGroup(new FeatureGroupEntity(vlmId, finalVersion, + featureGroupIdsList[0].toString()), user); manufactureReferenceNumber = featureGroup != null ? featureGroup - .getManufacturerReferenceNumber() : null; + .getManufacturerReferenceNumber() : null; } } return manufactureReferenceNumber != null ? Optional.of(manufactureReferenceNumber) : - Optional.empty(); + Optional.empty(); } /** * Create License Artifacts. - * @param vspId vspId - * @param vlmId vlmId - * @param vlmVersion vlmVersion + * + * @param vspId vspId + * @param vlmId vlmId + * @param vlmVersion vlmVersion * @param featureGroups featureGroups - * @param user user + * @param user user * @return FileContentHandler */ public FileContentHandler createLicenseArtifacts(String vspId, String vlmId, Version vlmVersion, @@ -189,12 +197,12 @@ public class VendorLicenseArtifactsServiceImpl implements VendorLicenseArtifacts mdcDataDebugMessage.debugEntryMessage("VSP Id", vspId); FileContentHandler artifacts = new FileContentHandler(); - String vendorName = VendorLicenseArtifactsServiceUtils.getVendorName(vlmId, user); + String vendorName = getVendorName(vlmId, user); artifacts.addFile(VNF_ARTIFACT_NAME_WITH_PATH, - createVnfArtifact(vspId, vlmId, vlmVersion, vendorName, featureGroups, user)); + createVnfArtifact(vspId, vlmId, vlmVersion, vendorName, featureGroups, user)); artifacts.addFile(VENDOR_LICENSE_MODEL_ARTIFACT_NAME_WITH_PATH, - createVendorLicenseArtifact(vlmId, vendorName, user)); + createVendorLicenseArtifact(vlmId, vendorName, user)); mdcDataDebugMessage.debugExitMessage("VSP Id", vspId); diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/util/VendorLicenseArtifactsServiceUtils.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/util/VendorLicenseArtifactsServiceUtils.java index f3e09766db..502aa350b9 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/util/VendorLicenseArtifactsServiceUtils.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/licenseartifacts/impl/util/VendorLicenseArtifactsServiceUtils.java @@ -45,15 +45,15 @@ import java.util.Set; public class VendorLicenseArtifactsServiceUtils { private static final HealingService healingService = - HealingServiceFactory.getInstance().createInterface(); + HealingServiceFactory.getInstance().createInterface(); /** * maps the entities by id * * @return a Map of id -> list of versionable entities with that id */ - static MultiValuedMap<String, VersionableEntity> mapById( - Collection<? extends VersionableEntity> versionableEntities) { + private static MultiValuedMap<String, VersionableEntity> mapById( + Collection<? extends VersionableEntity> versionableEntities) { MultiValuedMap<String, VersionableEntity> mappedById = new ArrayListValuedHashMap<>(); for (VersionableEntity ve : versionableEntities) { mappedById.put(ve.getId(), ve); @@ -64,16 +64,15 @@ public class VendorLicenseArtifactsServiceUtils { /** * For all entities with same id, only entities that differ from one another will be returned. * If no change has occured, the entity with the earlier VLM version will be returned. - * If only one version of said entitity exists it will be returned - * @param versionableEntities + * If only one version of said entities exists it will be returned * @return a list of entities that has been changed */ public static List<VersionableEntity> filterChangedEntities( - Collection<? extends VersionableEntity> versionableEntities) { + Collection<? extends VersionableEntity> versionableEntities) { MultiValuedMap<String, VersionableEntity> entitiesById = mapById( - versionableEntities); + versionableEntities); MultiValuedMap<String, VersionableEntity> entitiesByVersionUuId = - new ArrayListValuedHashMap<>(); + new ArrayListValuedHashMap<>(); List<VersionableEntity> changedOnly = new ArrayList<>(); for (String epId : entitiesById.keySet()) { @@ -86,7 +85,7 @@ public class VendorLicenseArtifactsServiceUtils { //for every list of eps which have the same uuid, get the one with the earliest vlm version. for (String versionUid : entitiesByVersionUuId.keySet()) { List<VersionableEntity> versionableEntitiesForUuid = - (List<VersionableEntity>) entitiesByVersionUuId.get(versionUid); + (List<VersionableEntity>) entitiesByVersionUuId.get(versionUid); versionableEntitiesForUuid.sort(new VersionableEntitySortByVlmMajorVersion()); changedOnly.add(versionableEntitiesForUuid.get(0)); } @@ -99,7 +98,7 @@ public class VendorLicenseArtifactsServiceUtils { Set<LicenseKeyGroupEntity> healed = new HashSet<>(); for (VersionableEntity licenseKeyGroupEntity : licenseKeyGroupEntities) { healed.add((LicenseKeyGroupEntity) VendorLicenseArtifactsServiceImpl.healingService - .heal(licenseKeyGroupEntity, user)); + .heal(licenseKeyGroupEntity, user)); } return healed; @@ -110,7 +109,7 @@ public class VendorLicenseArtifactsServiceUtils { Set<EntitlementPoolEntity> healed = new HashSet<>(); for (VersionableEntity entitlementPoolEntity : entitlementPoolEntities) { healed.add((EntitlementPoolEntity) VendorLicenseArtifactsServiceImpl.healingService - .heal(entitlementPoolEntity, user)); + .heal(entitlementPoolEntity, user)); } return healed; @@ -118,15 +117,69 @@ public class VendorLicenseArtifactsServiceUtils { public static List<Version> getFinalVersionsForVlm(String vlmId) { VersionInfo versionInfo = - VendorLicenseArtifactsServiceImpl.vendorLicenseFacade - .getVersionInfo(vlmId, VersionableEntityAction.Read, ""); + VendorLicenseArtifactsServiceImpl.vendorLicenseFacade + .getVersionInfo(vlmId, VersionableEntityAction.Read, ""); return versionInfo.getFinalVersions(); } public static String getVendorName(String vendorLicenseModelId, String user) { return VendorLicenseArtifactsServiceImpl.vendorLicenseFacade - .getVendorLicenseModel(vendorLicenseModelId, null, user) - .getVendorLicenseModel().getVendorName(); + .getVendorLicenseModel(vendorLicenseModelId, null, user) + .getVendorLicenseModel().getVendorName(); } + + + /** + * Written to handle the consequences of ATTASDC-4780 where version_uuid was not saved or + * retrieved correctly by DAO for EPs and LKGs. Performs a healing of sorts according to the + * following : 1. all versions of a specific entity (EP or LKG that have the same invariant_uuid) + * are ordered by their VLM version 2. first element is sent to healing (which will set a + * versionUUID for it IF it doesnt exist) 3. each subsequent element is compared to previous . If + * same, UUID is copied from the previous element , if they differ - the current element is sent + * to healing as before. For VLMs created post-bugfix this code should not update any element + */ + public static Collection<? extends VersionableEntity> prepareForFiltering(Collection<? extends + VersionableEntity> versionableEntities, String user, boolean isEP) { + MultiValuedMap<String, VersionableEntity> entitiesById = mapById( + versionableEntities); + + for (String epId : entitiesById.keySet()) { + List<VersionableEntity> versionableEntitiesForId = new ArrayList<>(); + versionableEntitiesForId.addAll(entitiesById.get(epId)); + versionableEntitiesForId.sort(new VersionableEntitySortByVlmMajorVersion()); + healingService.heal(versionableEntitiesForId.get(0), user); + for (int i = 1; i < versionableEntitiesForId.size(); i++) { + if (isEP) { + EntitlementPoolEntity current = (EntitlementPoolEntity) versionableEntitiesForId.get(i); + EntitlementPoolEntity previous = (EntitlementPoolEntity) versionableEntitiesForId + .get(i - 1); + if (current.equals(previous) && current.getVersionUuId() == null) { + current.setVersionUuId(previous.getVersionUuId()); + healingService.persistNoHealing(current); + } else { + versionableEntitiesForId.set(i, healingService.heal(versionableEntitiesForId.get(i), + user)); + } + + } else { + LicenseKeyGroupEntity current = (LicenseKeyGroupEntity) versionableEntitiesForId.get(i); + LicenseKeyGroupEntity previous = (LicenseKeyGroupEntity) versionableEntitiesForId + .get(i - 1); + if (current.equals(previous) && current.getVersionUuId() == null) { + current.setVersionUuId(previous.getVersionUuId()); + healingService.persistNoHealing(current); + } else { + versionableEntitiesForId.set(i, healingService.heal(versionableEntitiesForId.get(i), + user)); + } + + + } + } + } + return versionableEntities; + } + + } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/type/VspDetails.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/type/VspDetails.java index 2758e3dfe9..ccadeced62 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/type/VspDetails.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/type/VspDetails.java @@ -61,6 +61,11 @@ public class VspDetails implements VersionableEntity { private Long writetimeMicroSeconds; private String onboardingMethod; + + private String onboardingOrigin; + + private String networkPackageName; + public VspDetails() { } @@ -215,12 +220,29 @@ public class VspDetails implements VersionableEntity { this.oldVersion = oldVersion; } + public String getOnboardingOrigin() { + return onboardingOrigin; + } + + public void setOnboardingOrigin(String onboardingOrigin) { + this.onboardingOrigin = onboardingOrigin; + } + public String getOnboardingMethod() { return onboardingMethod; } public void setOnboardingMethod(String onboardingMethod) { this.onboardingMethod = onboardingMethod; } + + public String getNetworkPackageName() { + return networkPackageName; + } + + public void setNetworkPackageName(String networkPackageName) { + this.networkPackageName = networkPackageName; + } + @Override public String toString() { return String.format( diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/filedatastructuremodule/CandidateService.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/filedatastructuremodule/CandidateService.java index 4ca623e6a3..6cc639fac0 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/filedatastructuremodule/CandidateService.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/filedatastructuremodule/CandidateService.java @@ -21,10 +21,10 @@ package org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule; import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; import org.openecomp.sdc.datatypes.error.ErrorMessage; import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; import org.openecomp.sdc.vendorsoftwareproduct.types.CandidateDataEntityTo; import org.openecomp.sdc.vendorsoftwareproduct.types.candidateheat.AnalyzedZipHeatFiles; @@ -61,9 +61,12 @@ public interface CandidateService { Optional<ByteArrayInputStream> fetchZipFileByteArrayInputStream(String vspId, OrchestrationTemplateCandidateData candidateDataEntity, - String manifest, Map<String, List<ErrorMessage>> uploadErrors); + String manifest, + OnboardingTypesEnum type, + Map<String, List<ErrorMessage>> uploadErrors); - byte[] replaceManifestInZip(ByteBuffer contentData, String manifest, String vspId) + byte[] replaceManifestInZip(ByteBuffer contentData, String manifest, String vspId, + OnboardingTypesEnum type) throws IOException; Optional<ManifestContent> createManifest(VspDetails vspDetails, diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/utils/CandidateEntityBuilder.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/utils/CandidateEntityBuilder.java index 9540f3d965..ca5329344b 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/utils/CandidateEntityBuilder.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/utils/CandidateEntityBuilder.java @@ -75,6 +75,14 @@ public class CandidateEntityBuilder { return candidateDataEntity; } +// public OrchestrationTemplateCandidateData buildOrchestrationTemplateFromCsar(VspDetails vspDetails, +// byte[] uploadedFileData, +// FileContentHandler contentMap, +// Map<String, List<ErrorMessage>> uploadErrors, +// String user){ +// +// } + private HeatStructureTree getHeatStructureTree(VspDetails vspDetails, FileContentHandler contentMap, AnalyzedZipHeatFiles analyzedZipHeatFiles) { diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java index eef90d4742..7ad7929ccb 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java @@ -200,6 +200,8 @@ public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareP info.addProperty(InfoPropertyName.featureGroups.name(), vspDetails.getFeatureGroups()); info.addProperty(InfoPropertyName.oldVersion.name(), vspDetails.getOldVersion()); info.addProperty(InfoPropertyName.onboardingMethod.name(), vspDetails.getOnboardingMethod()); + info.addProperty(InfoPropertyName.obBoardingOrigin.name(), vspDetails.getOnboardingOrigin()); + info.addProperty(InfoPropertyName.networkPackageName.name(), vspDetails.getNetworkPackageName()); } private VspDetails mapInfoToVspDetails(String vspId, Version version, Info info, @@ -215,6 +217,7 @@ public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareP Version.valueOf(info.getProperty(InfoPropertyName.vendorVersion.name()))); vspDetails.setLicenseAgreement(info.getProperty(InfoPropertyName.licenseAgreement.name())); vspDetails.setFeatureGroups(info.getProperty(InfoPropertyName.featureGroups.name())); + vspDetails.setWritetimeMicroSeconds( modificationTime == null ? creationTime.getTime() : modificationTime.getTime()); vspDetails.setVersion(version); @@ -223,7 +226,8 @@ public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareP //Boolean oldVersion = ind == null || "true".equals( ind.toLowerCase()); vspDetails.setOldVersion(oldVersion); vspDetails.setOnboardingMethod(info.getProperty(InfoPropertyName.onboardingMethod.name())); - + vspDetails.setOnboardingOrigin(info.getProperty(InfoPropertyName.obBoardingOrigin.name())); + vspDetails.setNetworkPackageName(info.getProperty(InfoPropertyName.networkPackageName.name())); return vspDetails; } @@ -239,7 +243,9 @@ public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareP licenseAgreement, featureGroups, oldVersion, - onboardingMethod + onboardingMethod, + obBoardingOrigin, + networkPackageName } } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/composition/CompositionEntityDataManagerImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/composition/CompositionEntityDataManagerImpl.java index 7d5d57dc37..c76b15d221 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/composition/CompositionEntityDataManagerImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/composition/CompositionEntityDataManagerImpl.java @@ -79,12 +79,12 @@ import java.util.Set; public class CompositionEntityDataManagerImpl implements CompositionEntityDataManager { private static final String COMPOSITION_ENTITY_DATA_MANAGER_ERR = - "COMPOSITION_ENTITY_DATA_MANAGER_ERR"; + "COMPOSITION_ENTITY_DATA_MANAGER_ERR"; private static final String COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG = - "Invalid input: %s may not be null"; + "Invalid input: %s may not be null"; private static final Logger logger = - LoggerFactory.getLogger(CompositionEntityDataManagerImpl.class); + LoggerFactory.getLogger(CompositionEntityDataManagerImpl.class); private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); private Map<CompositionEntityId, CompositionEntityData> entities = new HashMap<>(); @@ -132,27 +132,27 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa if (entity == null) { throw new CoreException( - new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION) - .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage( - String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "composition entity")) - .build()); + new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION) + .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage( + String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "composition entity")) + .build()); } if (schemaTemplateContext == null) { throw new CoreException( - new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION) - .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage( - String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "schema template context")) - .build()); + new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION) + .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage( + String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "schema template context")) + .build()); } CompositionEntityValidationData validationData = - new CompositionEntityValidationData(entity.getType(), entity.getId()); + new CompositionEntityValidationData(entity.getType(), entity.getId()); String json = - schemaTemplateContext == SchemaTemplateContext.composition ? entity.getCompositionData() - : entity.getQuestionnaireData(); + schemaTemplateContext == SchemaTemplateContext.composition ? entity.getCompositionData() + : entity.getQuestionnaireData(); validationData.setErrors(JsonUtil.validate( - json == null ? JsonUtil.object2Json(new Object()) : json, - generateSchema(schemaTemplateContext, entity.getType(), schemaTemplateInput))); + json == null ? JsonUtil.object2Json(new Object()) : json, + generateSchema(schemaTemplateContext, entity.getType(), schemaTemplateInput))); mdcDataDebugMessage.debugExitMessage(null); return validationData; @@ -168,13 +168,13 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa public void addEntity(CompositionEntity entity, SchemaTemplateInput schemaTemplateInput) { if (entity == null) { throw new CoreException( - new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION) - .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage( - String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "composition entity")) - .build()); + new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION) + .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage( + String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "composition entity")) + .build()); } entities.put(entity.getCompositionEntityId(), - new CompositionEntityData(entity, schemaTemplateInput)); + new CompositionEntityData(entity, schemaTemplateInput)); } /** @@ -204,10 +204,10 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa @Override public void buildTrees() { Map<CompositionEntityId, CompositionEntityValidationData> entitiesValidationData = - new HashMap<>(); + new HashMap<>(); entities.entrySet().forEach( - entry -> addValidationDataEntity(entitiesValidationData, entry.getKey(), - entry.getValue().entity)); + entry -> addValidationDataEntity(entitiesValidationData, entry.getKey(), + entry.getValue().entity)); } public Collection<CompositionEntityValidationData> getTrees() { @@ -258,14 +258,14 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa } Collection<CompositionEntityValidationData> subEntitiesValidationData = - entity.getSubEntitiesValidationData(); + entity.getSubEntitiesValidationData(); return !CollectionUtils.isEmpty(subEntitiesValidationData) && - checkForErrorsInChildren(subEntitiesValidationData); + checkForErrorsInChildren(subEntitiesValidationData); } private boolean checkForErrorsInChildren( - Collection<CompositionEntityValidationData> subEntitiesValidationData) { + Collection<CompositionEntityValidationData> subEntitiesValidationData) { boolean result = false; for (CompositionEntityValidationData subEntity : subEntitiesValidationData) { if (CollectionUtils.isNotEmpty(subEntity.getErrors())) { @@ -359,10 +359,10 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa //component.setId(CommonMethods.nextUuId()); will be set by the dao component.setQuestionnaireData( - new JsonSchemaDataGenerator( - generateSchema(SchemaTemplateContext.questionnaire, CompositionEntityType.component, - null)) - .generateData()); + new JsonSchemaDataGenerator( + generateSchema(SchemaTemplateContext.questionnaire, CompositionEntityType.component, + null)) + .generateData()); componentDao.create(component); @@ -376,9 +376,9 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa //nic.setId(CommonMethods.nextUuId()); will be set by the dao nic.setQuestionnaireData( - new JsonSchemaDataGenerator( - generateSchema(SchemaTemplateContext.questionnaire, CompositionEntityType.nic, null)) - .generateData()); + new JsonSchemaDataGenerator( + generateSchema(SchemaTemplateContext.questionnaire, CompositionEntityType.nic, null)) + .generateData()); nicDao.create(nic); @@ -414,7 +414,7 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa public void getEntityListWithErrors(CompositionEntityValidationData entity, Set<CompositionEntityValidationData> compositionSet) { Collection<CompositionEntityValidationData> childNodes = - entity.getSubEntitiesValidationData(); + entity.getSubEntitiesValidationData(); if (CollectionUtils.isEmpty(childNodes)) { return; @@ -432,7 +432,7 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa public void addNodeWithErrors(CompositionEntityValidationData node, Set<CompositionEntityValidationData> entitiesWithErrors) { CompositionEntityValidationData compositionNodeToAdd = new CompositionEntityValidationData(node - .getEntityType(), node.getEntityId()); + .getEntityType(), node.getEntityId()); compositionNodeToAdd.setErrors(node.getErrors()); compositionNodeToAdd.setSubEntitiesValidationData(null); @@ -445,9 +445,9 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa private CompositionEntityData getCompositionEntityDataById(CompositionEntityValidationData - entity) { + entity) { for (Map.Entry<CompositionEntityId, CompositionEntityData> entityEntry : entities - .entrySet()) { + .entrySet()) { if (entityEntry.getKey().getId().equals(entity.getEntityId())) { return entityEntry.getValue(); } @@ -457,11 +457,11 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa private void updateValidationCompositionEntityName(Set<CompositionEntityValidationData> - compositionSet) { + compositionSet) { for (CompositionEntityValidationData entity : compositionSet) { String compositionData = getCompositionDataAsString(entity); if (entity.getEntityType().equals(CompositionEntityType.vsp) || - Objects.nonNull(compositionData)) { + Objects.nonNull(compositionData)) { entity.setEntityName(getEntityNameByEntityType(compositionData, entity)); } } @@ -488,12 +488,16 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa Network network = JsonUtil.json2Object(compositionData, Network.class); return network.getName(); + case image: + Image image = JsonUtil.json2Object(compositionData, Image.class); + return image.getFileName(); + case vsp: CompositionEntityData vspEntity = getCompositionEntityDataById(entity); VspQuestionnaireEntity vspQuestionnaireEntity = (VspQuestionnaireEntity) vspEntity.entity; VspDetails vspDetails = - vspInfoDao.get(new VspDetails(vspQuestionnaireEntity.getId(), - vspQuestionnaireEntity.getVersion())); + vspInfoDao.get(new VspDetails(vspQuestionnaireEntity.getId(), + vspQuestionnaireEntity.getVersion())); return vspDetails.getName(); } @@ -509,7 +513,7 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa if (hasChildren(node)) { Collection<CompositionEntityValidationData> subNodes = - new ArrayList<>(node.getSubEntitiesValidationData()); + new ArrayList<>(node.getSubEntitiesValidationData()); subNodes.forEach(subNode -> removeNodesWithoutErrors(subNode, node)); node.setSubEntitiesValidationData(subNodes); @@ -538,14 +542,14 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa private void addValidationDataEntity( - Map<CompositionEntityId, CompositionEntityValidationData> entitiesValidationData, - CompositionEntityId entityId, CompositionEntity entity) { + Map<CompositionEntityId, CompositionEntityValidationData> entitiesValidationData, + CompositionEntityId entityId, CompositionEntity entity) { if (entitiesValidationData.containsKey(entityId)) { return; } CompositionEntityValidationData validationData = - new CompositionEntityValidationData(entity.getType(), entity.getId()); + new CompositionEntityValidationData(entity.getType(), entity.getId()); entitiesValidationData.put(entityId, validationData); CompositionEntityId parentEntityId = entityId.getParentId(); @@ -573,32 +577,40 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa if (node.getSubEntitiesValidationData() != null) { node.getSubEntitiesValidationData() - .forEach(subNode -> addErrorsToTree(subNode, nodeId, errors)); + .forEach(subNode -> addErrorsToTree(subNode, nodeId, errors)); } } private Collection<String> validateQuestionnaire(CompositionEntityData compositionEntityData) { logger.debug(String.format("validateQuestionnaire start: " + - "[entity.type]=%s, [entity.id]=%s, [entity.questionnaireString]=%s", - compositionEntityData.entity.getType().name(), - compositionEntityData.entity.getCompositionEntityId().toString(), - compositionEntityData.entity.getQuestionnaireData())); + "[entity.type]=%s, [entity.id]=%s, [entity.questionnaireString]=%s", + compositionEntityData.entity.getType().name(), + compositionEntityData.entity.getCompositionEntityId().toString(), + compositionEntityData.entity.getQuestionnaireData())); + + if(Objects.isNull(compositionEntityData.entity.getQuestionnaireData()) || !JsonUtil.isValidJson + (compositionEntityData.entity.getQuestionnaireData())){ + List<String> errors = new ArrayList<>(); + errors.add("Data is missing for the above " + compositionEntityData.entity.getType() + + ". Complete the mandatory fields and resubmit."); + return errors; + } return JsonUtil.validate( - compositionEntityData.entity.getQuestionnaireData() == null - ? JsonUtil.object2Json(new Object()) - : compositionEntityData.entity.getQuestionnaireData(), - getSchema(compositionEntityData.entity.getType(), SchemaTemplateContext.questionnaire, - compositionEntityData.schemaTemplateInput)); + compositionEntityData.entity.getQuestionnaireData() == null + ? JsonUtil.object2Json(new Object()) + : compositionEntityData.entity.getQuestionnaireData(), + getSchema(compositionEntityData.entity.getType(), SchemaTemplateContext.questionnaire, + compositionEntityData.schemaTemplateInput)); } private String getSchema(CompositionEntityType compositionEntityType, SchemaTemplateContext schemaTemplateContext, SchemaTemplateInput schemaTemplateInput) { return schemaTemplateInput == null - ? nonDynamicSchemas.computeIfAbsent(compositionEntityType, - k -> generateSchema(schemaTemplateContext, compositionEntityType, null)) - : generateSchema(schemaTemplateContext, compositionEntityType, schemaTemplateInput); + ? nonDynamicSchemas.computeIfAbsent(compositionEntityType, + k -> generateSchema(schemaTemplateContext, compositionEntityType, null)) + : generateSchema(schemaTemplateContext, compositionEntityType, schemaTemplateInput); } private static class CompositionEntityData { @@ -619,7 +631,7 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa CompositionEntityType compositionEntityType, SchemaTemplateInput schemaTemplateInput) { return SchemaGenerator - .generate(schemaTemplateContext, compositionEntityType, schemaTemplateInput); + .generate(schemaTemplateContext, compositionEntityType, schemaTemplateInput); } @Override @@ -638,9 +650,9 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa image.setId(CommonMethods.nextUuId()); image.setQuestionnaireData( - new JsonSchemaDataGenerator(SchemaGenerator - .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.image, null)) - .generateData()); + new JsonSchemaDataGenerator(SchemaGenerator + .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.image, null)) + .generateData()); imageDao.create(image); mdcDataDebugMessage.debugExitMessage(null, null); @@ -650,23 +662,23 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa @Override public ComputeEntity createCompute(ComputeEntity compute) { mdcDataDebugMessage.debugEntryMessage("VSP id, component id", compute.getVspId(), - compute.getComponentId()); + compute.getComponentId()); compute.setId(CommonMethods.nextUuId()); compute.setQuestionnaireData( - new JsonSchemaDataGenerator(SchemaGenerator - .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.compute, - null)).generateData()); + new JsonSchemaDataGenerator(SchemaGenerator + .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.compute, + null)).generateData()); computeDao.create(compute); mdcDataDebugMessage.debugExitMessage("VSP id, component id", compute.getVspId(), - compute.getComponentId()); + compute.getComponentId()); return compute; } public void saveComputesFlavorByComponent(String vspId, Version version, Component component, String - componentId) { + componentId) { if (CollectionUtils.isNotEmpty(component.getCompute())) { for (ComputeData flavor : component.getCompute()) { ComputeEntity computeEntity = new ComputeEntity(vspId, version, componentId, null); @@ -677,7 +689,7 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa } public void saveImagesByComponent(String vspId, Version version, Component component, String - componentId) { + componentId) { if (CollectionUtils.isNotEmpty(component.getImages())) { for (Image img : component.getImages()) { ImageEntity imageEntity = new ImageEntity(vspId, version, componentId, null); diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/filedatastructuremodule/CandidateServiceImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/filedatastructuremodule/CandidateServiceImpl.java index 6ccece1e76..e5f1a4c3ac 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/filedatastructuremodule/CandidateServiceImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/filedatastructuremodule/CandidateServiceImpl.java @@ -23,6 +23,7 @@ package org.openecomp.sdc.vendorsoftwareproduct.services.impl.filedatastructurem import org.apache.commons.collections4.CollectionUtils; import org.openecomp.core.utilities.file.FileContentHandler; import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.common.errors.ErrorCategory; import org.openecomp.sdc.common.errors.ErrorCode; @@ -89,17 +90,17 @@ public class CandidateServiceImpl implements CandidateService { } @Override - public Optional<ErrorMessage> validateNonEmptyFileToUpload(InputStream heatFileToUpload) { + public Optional<ErrorMessage> validateNonEmptyFileToUpload(InputStream fileToUpload) { mdcDataDebugMessage.debugEntryMessage(null); - if (Objects.isNull(heatFileToUpload)) { + if (Objects.isNull(fileToUpload)) { return Optional.of(new ErrorMessage(ErrorLevel.ERROR, Messages.NO_ZIP_FILE_WAS_UPLOADED_OR_ZIP_NOT_EXIST.getErrorMessage())); } else { try { - int available = heatFileToUpload.available(); + int available = fileToUpload.available(); if (available == 0) { mdcDataDebugMessage.debugExitMessage(null); return Optional.of(new ErrorMessage(ErrorLevel.ERROR, @@ -321,10 +322,7 @@ public class CandidateServiceImpl implements CandidateService { public void updateCandidateUploadData(OrchestrationTemplateCandidateData uploadData, String itemId) { mdcDataDebugMessage.debugEntryMessage(null); - - //vendorSoftwareProductDao.updateCandidateUploadData(uploadData); orchestrationTemplateCandidateDataDao.update(itemId, uploadData); - mdcDataDebugMessage.debugExitMessage(null); } @@ -393,11 +391,12 @@ public class CandidateServiceImpl implements CandidateService { public Optional<ByteArrayInputStream> fetchZipFileByteArrayInputStream(String vspId, OrchestrationTemplateCandidateData candidateDataEntity, String manifest, + OnboardingTypesEnum type, Map<String, List<ErrorMessage>> uploadErrors) { byte[] file; ByteArrayInputStream byteArrayInputStream = null; try { - file = replaceManifestInZip(candidateDataEntity.getContentData(), manifest, vspId); + file = replaceManifestInZip(candidateDataEntity.getContentData(), manifest, vspId, type); byteArrayInputStream = new ByteArrayInputStream( Objects.isNull(file) ? candidateDataEntity.getContentData().array() : file); @@ -413,7 +412,8 @@ public class CandidateServiceImpl implements CandidateService { } @Override - public byte[] replaceManifestInZip(ByteBuffer contentData, String manifest, String vspId) + public byte[] replaceManifestInZip(ByteBuffer contentData, String manifest, String vspId, + OnboardingTypesEnum type) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); @@ -433,12 +433,12 @@ public class CandidateServiceImpl implements CandidateService { } } else { manifestWritten = true; - writeManifest(manifest, zos); + writeManifest(manifest, type, zos); } zos.closeEntry(); } if (!manifestWritten) { - writeManifest(manifest, zos); + writeManifest(manifest, type, zos); zos.closeEntry(); } } @@ -451,7 +451,14 @@ public class CandidateServiceImpl implements CandidateService { return candidateServiceValidator.validateFileDataStructure(filesDataStructure); } - private void writeManifest(String manifest, ZipOutputStream zos) throws IOException { + private void writeManifest(String manifest, + OnboardingTypesEnum type, + ZipOutputStream zos) throws IOException { + + if(isManifestNeedsToGetWritten(type)){ + return; + } + zos.putNextEntry(new ZipEntry(SdcCommon.MANIFEST_NAME)); try (InputStream manifestStream = new ByteArrayInputStream( manifest.getBytes(StandardCharsets.UTF_8))) { @@ -463,6 +470,10 @@ public class CandidateServiceImpl implements CandidateService { } } + private boolean isManifestNeedsToGetWritten(OnboardingTypesEnum type) { + return type.equals(OnboardingTypesEnum.CSAR); + } + private void handleArtifactsFromTree(HeatStructureTree tree, FilesDataStructure structure) { if (Objects.isNull(tree) || Objects.isNull(tree.getArtifacts())) { diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/pom.xml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/pom.xml new file mode 100644 index 0000000000..faf890f672 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/pom.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <dependencies> + <dependency> + <groupId>org.openecomp.sdc.common</groupId> + <artifactId>openecomp-tosca-datatype</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.openecomp.sdc.core</groupId> + <artifactId>openecomp-tosca-lib</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.openecomp.sdc.core</groupId> + <artifactId>openecomp-facade-core</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + </dependencies> + + <parent> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-tosca-converter-lib</artifactId> + <version>1.1.0-SNAPSHOT</version> + </parent> + + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-tosca-converter-api</artifactId> + <version>1.1.0-SNAPSHOT</version> + + +</project>
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/ServiceTemplateReaderService.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/ServiceTemplateReaderService.java new file mode 100644 index 0000000000..09c823ce7e --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/ServiceTemplateReaderService.java @@ -0,0 +1,24 @@ +package org.openecomp.core.converter; + +import java.util.Map; + +public interface ServiceTemplateReaderService { + + Map<String, Object> readServiceTemplate(byte[] serivceTemplateContent); + + Object getMetadata(); + + Object getToscaVersion(); + + Object getNodeTypes(); + + Object getTopologyTemplate(); + + Map<String, Object> getNodeTemplates(); + + Map<String, Object> getInputs(); + + Map<String, Object> getOutputs(); + + Map<String, Object> getSubstitutionMappings(); +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/ToscaConverter.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/ToscaConverter.java new file mode 100644 index 0000000000..543d32347f --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/ToscaConverter.java @@ -0,0 +1,12 @@ +package org.openecomp.core.converter; + +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; + +import java.io.IOException; + +public interface ToscaConverter { + + ToscaServiceModel convert(FileContentHandler fileContentHandler) + throws IOException; +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/api/ToscaConverterManager.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/api/ToscaConverterManager.java new file mode 100644 index 0000000000..1cf010c1b5 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/api/ToscaConverterManager.java @@ -0,0 +1,9 @@ +package org.openecomp.core.converter.api; + +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; + +public interface ToscaConverterManager { + + ToscaServiceModel convert(String csarName, FileContentHandler fileContentHandler); +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/datatypes/Constants.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/datatypes/Constants.java new file mode 100644 index 0000000000..6f7e6be8af --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/datatypes/Constants.java @@ -0,0 +1,45 @@ +package org.openecomp.core.converter.datatypes; + +import java.io.File; + +public class Constants { + public static final String mainStName = "MainServiceTemplate.yaml"; + public static final String globalStName = "GlobalSubstitutionTypesServiceTemplate.yaml"; + public static final String manifestFileName = "MainServiceTemplate.mf"; + public static final String definitionsDir = "Definitions/"; + public static final String metadataFile = "TOSCA-Metadata/TOSCA.meta"; + + + public static final String definitionVersion = "tosca_definitions_version"; + private static final String DEFAULT_NAMESPACE = "tosca_default_namespace"; + private static final String TEMPLATE_NAME = "template_name"; + public static final String topologyTemplate = "topology_template"; + private static final String TEMPLATE_AUTHOR = "template_author"; + private static final String TEMPLATE_VERSION = "template_version"; + private static final String DESCRIPTION = "description"; + private static final String IMPORTS = "imports"; + private static final String DSL_DEFINITIONS = "dsl_definitions"; + public static final String nodeType = "node_type"; + public static final String nodeTypes = "node_types"; + private static final String RELATIONSHIP_TYPES = "relationship_types"; + private static final String RELATIONSHIP_TEMPLATES = "relationship_templates"; + private static final String CAPABILITY_TYPES = "capability_types"; + private static final String ARTIFACT_TYPES = "artifact_types"; + private static final String DATA_TYPES = "data_types"; + private static final String INTERFACE_TYPES = "interface_types"; + private static final String POLICY_TYPES = "policy_types"; + private static final String GROUP_TYPES = "group_types"; + private static final String REPOSITORIES = "repositories"; + public static final String metadata = "metadata"; + public static final String nodeTemplates = "node_templates"; + public static final String inputs = "inputs"; + public static final String outputs = "outputs"; + public static final String substitutionMappings = "substitution_mappings"; + public static final String capabilities = "capabilities"; + public static final String requirements = "requirements"; + + public static final String openecompHeatIndex = "openecomp_heat_index"; + public static final String globalSubstitution = "GlobalSubstitutionTypes"; + + public static final String externalFilesFolder = "External" + File.separator; +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/datatypes/CsarFileTypes.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/datatypes/CsarFileTypes.java new file mode 100644 index 0000000000..323bd8a5fb --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/datatypes/CsarFileTypes.java @@ -0,0 +1,9 @@ +package org.openecomp.core.converter.datatypes; + +public enum CsarFileTypes { + mainServiceTemplate, + globalServiceTemplate, + externalFile, + toscaMetadata, + definitionsFile,; +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/factory/ToscaConverterFactory.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/factory/ToscaConverterFactory.java new file mode 100644 index 0000000000..7506759d25 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/main/java/org/openecomp/core/converter/factory/ToscaConverterFactory.java @@ -0,0 +1,12 @@ +package org.openecomp.core.converter.factory; + +import org.openecomp.core.converter.ToscaConverter; +import org.openecomp.core.factory.api.AbstractComponentFactory; +import org.openecomp.core.factory.api.AbstractFactory; + +public abstract class ToscaConverterFactory extends AbstractComponentFactory<ToscaConverter> { + + public static ToscaConverterFactory getInstance(){ + return AbstractFactory.getInstance(ToscaConverterFactory.class); + } +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/resources/factoryConfiguration.json b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/resources/factoryConfiguration.json new file mode 100644 index 0000000000..d9f4ff3cbd --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-api/src/resources/factoryConfiguration.json @@ -0,0 +1,3 @@ +{ + "org.openecomp.core.converter.factory.ToscaConverterFactory" : "org.openecomp.core.impl.factory.ToscaConverterFactoryImpl" +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/pom.xml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/pom.xml new file mode 100644 index 0000000000..39f02becf8 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/pom.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <dependencies> + <dependency> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-tosca-converter-api</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.openecomp.sdc.core</groupId> + <artifactId>openecomp-tosca-lib</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.openecomp.sdc.core</groupId> + <artifactId>openecomp-facade-core</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.openecomp.sdc.jtosca</groupId> + <artifactId>jtosca</artifactId> + <version>1.1.1-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-sdc-translator-core</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junit.version}</version> + <scope>test</scope> + </dependency> + </dependencies> + + <parent> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-tosca-converter-lib</artifactId> + <version>1.1.0-SNAPSHOT</version> + </parent> + + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-tosca-converter-core</artifactId> + <version>1.1.0-SNAPSHOT</version> + + +</project>
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/GlobalSubstitutionServiceTemplate.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/GlobalSubstitutionServiceTemplate.java new file mode 100644 index 0000000000..778445c513 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/GlobalSubstitutionServiceTemplate.java @@ -0,0 +1,87 @@ +package org.openecomp.core.impl; + +import org.apache.commons.collections4.MapUtils; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; +import org.openecomp.sdc.tosca.datatypes.model.Import; +import org.openecomp.sdc.tosca.datatypes.model.NodeType; +import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; +import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +public class GlobalSubstitutionServiceTemplate extends ServiceTemplate { + private static final Logger logger = LoggerFactory.getLogger(ServiceTemplate.class); + + public static final String GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME = + "GlobalSubstitutionTypesServiceTemplate.yaml"; + public static final String TEMPLATE_NAME_PROPERTY = "template_name"; + public static final String DEFININTION_VERSION = "tosca_simple_yaml_1_0_0"; + public static final String HEAT_INDEX = "openecomp_heat_index"; + private static final Map<String, ServiceTemplate> globalServiceTemplates = + GlobalTypesGenerator.getGlobalTypesServiceTemplate(); + + public GlobalSubstitutionServiceTemplate() { + super(); + init(); + } + + + public void appendNodes(Map<String, NodeType> nodes) { + Optional<Map<String, NodeType>> nodeTypesToAdd = + removeExistingGlobalTypes(nodes); + + nodeTypesToAdd.ifPresent(nodeTypes -> getNode_types().putAll(nodeTypes)); + } + + public void init() { + writeDefinitionSection(); + writeMetadataSection(); + writeImportsSection(); + setNode_types(new HashMap<>()); + } + + private void writeImportsSection() { + List<Map<String, Import>> imports = new ArrayList<>(); + Map<String, Import> stringImportMap = new HashMap<>(); + imports.add(stringImportMap); + setImports(imports); + Import imprtObj = new Import(); + imprtObj.setFile("openecomp-heat/_index.yml"); + stringImportMap.put("openecomp_heat_index", imprtObj); + } + + + private void writeMetadataSection() { + Map<String, String> metadata = new HashMap<>(); + metadata.put(TEMPLATE_NAME_PROPERTY, "GlobalSubstitutionTypes"); + setMetadata(metadata); + } + + private void writeDefinitionSection() { + setTosca_definitions_version(DEFININTION_VERSION); + } + + public Optional<Map<String, NodeType>> removeExistingGlobalTypes(Map<String, NodeType> nodes){ + Map<String, NodeType> nodeTypesToAdd = new HashMap<>(); + ServiceTemplate serviceTemplate = globalServiceTemplates.get("openecomp/nodes.yml"); + + if(Objects.isNull(serviceTemplate) || MapUtils.isEmpty(serviceTemplate.getNode_types())){ + return Optional.of(nodes); + } + + Map<String, NodeType> globalNodeTypes = serviceTemplate.getNode_types(); + for(Map.Entry<String, NodeType> nodeTypeEntry : nodes.entrySet()){ + if(!globalNodeTypes.containsKey(nodeTypeEntry.getKey())){ + nodeTypesToAdd.put(nodeTypeEntry.getKey(), nodeTypeEntry.getValue()); + } + } + + return Optional.of(nodeTypesToAdd); + } +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterImpl.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterImpl.java new file mode 100644 index 0000000000..69fa33aae7 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterImpl.java @@ -0,0 +1,451 @@ +package org.openecomp.core.impl; + +import org.apache.commons.collections.MapUtils; +import org.openecomp.core.converter.ServiceTemplateReaderService; +import org.openecomp.core.converter.ToscaConverter; +import org.openecomp.core.converter.datatypes.Constants; +import org.openecomp.core.converter.datatypes.CsarFileTypes; +import org.openecomp.core.impl.services.ServiceTemplateReaderServiceImpl; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.sdc.common.errors.CoreException; +import org.openecomp.sdc.common.errors.ErrorCategory; +import org.openecomp.sdc.common.errors.ErrorCode; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; +import org.openecomp.sdc.tosca.datatypes.model.*; +import org.openecomp.sdc.tosca.services.DataModelUtil; +import org.openecomp.sdc.tosca.services.ToscaUtil; +import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator; +import org.yaml.snakeyaml.error.YAMLException; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOException; +import java.util.*; +import java.util.jar.Manifest; +import java.util.regex.Pattern; + +import static org.openecomp.core.converter.datatypes.Constants.*; +import static org.openecomp.core.impl.GlobalSubstitutionServiceTemplate.GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME; + +public class ToscaConverterImpl implements ToscaConverter { + + public ToscaConverterImpl() { + + } + + @Override + public ToscaServiceModel convert(FileContentHandler fileContentHandler) + throws IOException { + Map<String, byte[]> csarFiles = new HashMap<>(fileContentHandler.getFiles()); + ToscaServiceModel toscaServiceModel = new ToscaServiceModel(); + Map<String, ServiceTemplate> serviceTemplates = new HashMap<>(); + FileContentHandler artifacts = new FileContentHandler(); + GlobalSubstitutionServiceTemplate gsst = new GlobalSubstitutionServiceTemplate(); + for (Map.Entry<String, byte[]> fileEntry : csarFiles.entrySet()) { + CsarFileTypes fileType = getFileType(fileEntry.getKey()); + switch (fileType) { + case mainServiceTemplate: + handleServiceTemplate(mainStName, fileEntry.getKey(), csarFiles, serviceTemplates); + break; + + case globalServiceTemplate: + handleServiceTemplate(globalStName, fileEntry.getKey(), csarFiles, serviceTemplates); + break; + + case externalFile: + artifacts.addFile(fileEntry.getKey(), fileEntry.getValue()); + break; + + case definitionsFile: + handleDefintionTemplate(fileEntry.getKey(), csarFiles, gsst); + break; + } + } + handleMetadataFile(csarFiles); + updateToscaServiceModel(toscaServiceModel, serviceTemplates, artifacts, gsst, csarFiles); + return toscaServiceModel; + } + + private void handleMetadataFile(Map<String, byte[]> csarFiles) { + byte[] bytes = csarFiles.remove(metadataFile); + if (bytes != null) { + csarFiles.put(metadataFile + ".original", bytes); + } + } + + private void handleDefintionTemplate(String key, Map<String, byte[]> csarFiles, + GlobalSubstitutionServiceTemplate gsst) { + try { + ServiceTemplateReaderService readerService = new ServiceTemplateReaderServiceImpl(csarFiles.get(key)); + if (readerService == null) { + return; + } + Object nodeTypes = readerService.getNodeTypes(); + if (nodeTypes instanceof Map) { + Map<String, NodeType> nodeTypeMap = (Map<String, NodeType>) nodeTypes; + gsst.appendNodes(nodeTypeMap); + } + } catch (YAMLException ye) { + throw new CoreException(new ErrorCode.ErrorCodeBuilder() + .withMessage("Invalid YAML content in file " + key + ". reason - " + + ye.getMessage()) + .withCategory(ErrorCategory.APPLICATION).build()); + } + } + + private void updateToscaServiceModel(ToscaServiceModel toscaServiceModel, + Map<String, ServiceTemplate> serviceTemplates, + FileContentHandler externalFilesHandler, + GlobalSubstitutionServiceTemplate globalSubstitutionServiceTemplate, + Map<String, byte[]> csarFiles) { + Collection<ServiceTemplate> globalServiceTemplates = + GlobalTypesGenerator.getGlobalTypesServiceTemplate().values(); + addGlobalServiceTemplates(globalServiceTemplates, serviceTemplates); + toscaServiceModel.setEntryDefinitionServiceTemplate(mainStName); + toscaServiceModel.setServiceTemplates(serviceTemplates); + externalFilesHandler.addFile(metadataFile + ".original", + csarFiles.get(metadataFile + ".original")); + toscaServiceModel.setArtifactFiles(externalFilesHandler); + + if(MapUtils.isNotEmpty(globalSubstitutionServiceTemplate.getNode_types())) { + serviceTemplates + .put(GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME, globalSubstitutionServiceTemplate); + } + } + + private void addGlobalServiceTemplates(Collection<ServiceTemplate> globalServiceTemplates, + Map<String, ServiceTemplate> serviceTemplates) { + for (ServiceTemplate serviceTemplate : globalServiceTemplates) { + serviceTemplates.put(ToscaUtil.getServiceTemplateFileName(serviceTemplate), serviceTemplate); + } + } + + private void handleServiceTemplate(String serviceTemplateName, + String fileName, Map<String, byte[]> csarFiles, + Map<String, ServiceTemplate> serviceTemplates) { + Optional<ServiceTemplate> serviceTemplate = + getServiceTemplateFromCsar(fileName, csarFiles); + serviceTemplate.ifPresent( + serviceTemplate1 -> addServiceTemplate(serviceTemplateName, serviceTemplate1, + serviceTemplates)); + } + + private void addServiceTemplate(String serviceTemplateName, + ServiceTemplate serviceTemplate, + Map<String, ServiceTemplate> serviceTemplates) { + serviceTemplates.put(serviceTemplateName, serviceTemplate); + } + + private Optional<byte[]> getManifestContent(Map<String, byte[]> csarFiles) { + for (Map.Entry<String, byte[]> csarFileEntry : csarFiles.entrySet()) { + if (csarFileEntry.getKey().contains(manifestFileName)) { + return Optional.of(csarFileEntry.getValue()); + } + } + + return Optional.empty(); + } + + private Optional<ServiceTemplate> getServiceTemplateFromCsar(String fileName, + Map<String, byte[]> csarFiles) { + byte[] fileContent = csarFiles.get(fileName); + ServiceTemplate serviceTemplate = convertServiceTemplate(fileName, fileContent); + + return Optional.of(serviceTemplate); + } + + private ServiceTemplate convertServiceTemplate(String serviceTemplateName, + byte[] fileContent) { + ServiceTemplate serviceTemplate = new ServiceTemplate(); + try { + ServiceTemplateReaderService readerService = + new ServiceTemplateReaderServiceImpl(fileContent); + convertMetadata(serviceTemplateName, serviceTemplate, readerService); + convertToscaVersion(serviceTemplate, readerService); + convertImports(serviceTemplate); + convertNodeTypes(serviceTemplate, readerService); + convertTopologyTemplate(serviceTemplate, readerService); + + } catch (YAMLException ye) { + throw new CoreException(new ErrorCode.ErrorCodeBuilder() + .withMessage("Invalid YAML content in file" + serviceTemplateName + ". reason - " + + ye.getMessage()) + .withCategory(ErrorCategory.APPLICATION).build()); + } + + + return serviceTemplate; + } + + private void convertToscaVersion(ServiceTemplate serviceTemplate, + ServiceTemplateReaderService readerService) { + Object toscaVersion = readerService.getToscaVersion(); + serviceTemplate.setTosca_definitions_version((String) toscaVersion); + } + + private void convertImports(ServiceTemplate serviceTemplate) { + serviceTemplate.setImports(new ArrayList<>()); + serviceTemplate.getImports() + .add(createImportMap(openecompHeatIndex, "openecomp-heat/_index.yml")); + serviceTemplate.getImports().add(createImportMap(globalSubstitution, globalStName)); + + } + + private Map<String, Import> createImportMap(String key, String fileName) { + Map<String, Import> importMap = new HashMap<>(); + Import anImport = new Import(); + anImport.setFile(fileName); + importMap.put(key, anImport); + + return importMap; + } + + private void convertMetadata(String serviceTemplateName, + ServiceTemplate serviceTemplate, + ServiceTemplateReaderService readerService) { + Map<String, Object> metadataToConvert = (Map<String, Object>) readerService.getMetadata(); + Map<String, String> finalMetadata = new HashMap<>(); + + if (MapUtils.isNotEmpty(metadataToConvert)) { + for (Map.Entry<String, Object> metadataEntry : metadataToConvert.entrySet()) { + if (Objects.isNull(metadataEntry.getValue()) || + !(metadataEntry.getValue() instanceof String)) { + continue; + } + finalMetadata.put(metadataEntry.getKey(), (String) metadataEntry.getValue()); + } + } + + finalMetadata.put("template_name", getTemplateNameFromStName(serviceTemplateName)); + serviceTemplate.setMetadata(finalMetadata); + } + + private void convertNodeTypes(ServiceTemplate serviceTemplate, ServiceTemplateReaderService readerService) { + Map<String, Object> nodeTypes = (Map<String, Object>) readerService.getNodeTypes(); + if (MapUtils.isEmpty(nodeTypes)) { + return; + } + + for (Map.Entry<String, Object> nodeTypeEntry : nodeTypes.entrySet()) { + DataModelUtil + .addNodeType(serviceTemplate, nodeTypeEntry.getKey(), + (NodeType) createObjectFromClass(nodeTypeEntry.getKey(), nodeTypeEntry.getValue(), + NodeType.class)); + } + } + + private void convertTopologyTemplate(ServiceTemplate serviceTemplate, + ServiceTemplateReaderService readerService) { + + convertInputs(serviceTemplate, readerService); + convertNodeTemplates(serviceTemplate, readerService); + convertOutputs(serviceTemplate, readerService); + convertSubstitutionMappings(serviceTemplate, readerService); + } + + private void convertInputs(ServiceTemplate serviceTemplate, + ServiceTemplateReaderService readerService) { + Map<String, Object> inputs = readerService.getInputs(); + addInputsOrOutputsToServiceTemplate(serviceTemplate, inputs, Constants.inputs); + } + + private void convertOutputs(ServiceTemplate serviceTemplate, + ServiceTemplateReaderService readerService) { + Map<String, Object> outputs = readerService.getOutputs(); + addInputsOrOutputsToServiceTemplate(serviceTemplate, outputs, Constants.outputs); + } + + private void addInputsOrOutputsToServiceTemplate(ServiceTemplate serviceTemplate, + Map<String, Object> mapToConvert, + String inputsOrOutputs) { + if (MapUtils.isEmpty(mapToConvert)) { + return; + } + + for (Map.Entry<String, Object> entry : mapToConvert.entrySet()) { + ParameterDefinition parameterDefinition = + (ParameterDefinition) createObjectFromClass( + entry.getKey(), entry.getValue(), ParameterDefinition.class); + addToServiceTemplateAccordingToSection( + serviceTemplate, inputsOrOutputs, entry.getKey(), parameterDefinition); + } + } + + private void addToServiceTemplateAccordingToSection(ServiceTemplate serviceTemplate, + String inputsOrOutputs, + String parameterId, + ParameterDefinition parameterDefinition) { + switch (inputsOrOutputs) { + case inputs: + DataModelUtil + .addInputParameterToTopologyTemplate(serviceTemplate, parameterId, parameterDefinition); + break; + case outputs: + DataModelUtil + .addOutputParameterToTopologyTemplate(serviceTemplate, parameterId, parameterDefinition); + } + } + + private void convertNodeTemplates(ServiceTemplate serviceTemplate, + ServiceTemplateReaderService readerService) { + Map<String, Object> nodeTemplates = readerService.getNodeTemplates(); + if (MapUtils.isEmpty(nodeTemplates)) { + return; + } + + for (Map.Entry<String, Object> nodeTemplateEntry : nodeTemplates.entrySet()) { + NodeTemplate nodeTemplate = convertNodeTemplate(nodeTemplateEntry.getValue()); + DataModelUtil.addNodeTemplate(serviceTemplate, nodeTemplateEntry.getKey(), nodeTemplate); + } + } + + private void convertSubstitutionMappings(ServiceTemplate serviceTemplate, + ServiceTemplateReaderService readerService) { + Map<String, Object> substitutionMappings = readerService.getSubstitutionMappings(); + if (MapUtils.isEmpty(substitutionMappings)) { + return; + } + SubstitutionMapping substitutionMapping = convertSubstitutionMappings(substitutionMappings); + DataModelUtil.addSubstitutionMapping(serviceTemplate, substitutionMapping); + } + + private SubstitutionMapping convertSubstitutionMappings(Map<String, Object> substitutionMappings) { + SubstitutionMapping substitutionMapping = new SubstitutionMapping(); + + substitutionMapping.setNode_type((String) substitutionMappings.get(nodeType)); + substitutionMapping.setCapabilities( + convertSubstitutionMappingsSections((Map<String, Object>) substitutionMappings.get(capabilities))); + substitutionMapping.setRequirements( + convertSubstitutionMappingsSections((Map<String, Object>) substitutionMappings.get(requirements))); + + return substitutionMapping; + } + + private Map<String, List<String>> convertSubstitutionMappingsSections( + Map<String, Object> sectionToConvert) { + Map<String, List<String>> convertedSection = new HashMap<>(); + if (MapUtils.isEmpty(sectionToConvert)) { + return null; + } + + for (Map.Entry<String, Object> entry : sectionToConvert.entrySet()) { + if (entry.getValue() instanceof List) { + convertedSection.put(entry.getKey(), (List<String>) entry.getValue()); + } + } + + return convertedSection; + } + + private CsarFileTypes getFileType(String fileName) { + if (isMainServiceTemplate(fileName)) { + return CsarFileTypes.mainServiceTemplate; + } else if (isGlobalServiceTemplate(fileName)) { + return CsarFileTypes.globalServiceTemplate; + } else if (isDefinitions(fileName)) { + return CsarFileTypes.definitionsFile; + } else if (isMetadataFile(metadataFile)) { + return CsarFileTypes.toscaMetadata; + } + return CsarFileTypes.externalFile; + } + + private Optional<Manifest> getCsarManifest(Map<String, byte[]> csarFiles) throws IOException { + Optional<byte[]> manifestContent = getManifestContent(csarFiles); + + if (manifestContent.isPresent()) { + ByteArrayInputStream byteInputStream = new ByteArrayInputStream(manifestContent.get()); + + return Optional.of(new Manifest(byteInputStream)); + } + + return Optional.empty(); + } + + private NodeTemplate convertNodeTemplate(Object candidateNodeTemplate) { + NodeTemplate nodeTemplate = new NodeTemplate(); + + Map<String, Object> nodeTemplateAsMap = (Map<String, Object>) candidateNodeTemplate; + nodeTemplate.setArtifacts((Map<String, ArtifactDefinition>) nodeTemplateAsMap.get("artifacts")); + nodeTemplate.setAttributes((Map<String, Object>) nodeTemplateAsMap.get("attributes")); + nodeTemplate.setCopy((String) nodeTemplateAsMap.get("copy")); + nodeTemplate.setDescription((String) nodeTemplateAsMap.get("description")); + nodeTemplate.setDirectives((List<String>) nodeTemplateAsMap.get("directives")); + nodeTemplate.setInterfaces( + (Map<String, InterfaceDefinition>) nodeTemplateAsMap.get("interfaces")); + nodeTemplate.setNode_filter((NodeFilter) nodeTemplateAsMap.get("node_filter")); + nodeTemplate.setProperties((Map<String, Object>) nodeTemplateAsMap.get("properties")); + nodeTemplate.setRequirements( + (List<Map<String, RequirementAssignment>>) nodeTemplateAsMap.get("requirements")); + nodeTemplate.setType((String) nodeTemplateAsMap.get("type")); + nodeTemplate.setCapabilities( + convertCapabilities((Map<String, Object>) nodeTemplateAsMap.get("capabilities"))); + + return nodeTemplate; + } + + private List<Map<String, CapabilityAssignment>> convertCapabilities(Map<String, Object> capabilities) { + List<Map<String, CapabilityAssignment>> convertedCapabilities = new ArrayList<>(); + if (MapUtils.isEmpty(capabilities)) { + return null; + } + for (Map.Entry<String, Object> capabilityAssignmentEntry : capabilities.entrySet()) { + Map<String, CapabilityAssignment> tempMap = new HashMap<>(); + tempMap.put(capabilityAssignmentEntry.getKey(), + (CapabilityAssignment) createObjectFromClass + (capabilityAssignmentEntry.getKey(), capabilityAssignmentEntry.getValue(), CapabilityAssignment.class)); + convertedCapabilities.add(tempMap); + } + return convertedCapabilities; + } + + private Object createObjectFromClass(String nodeTypeId, + Object objectCandidate, + Class classToCreate) { + try { + return JsonUtil.json2Object(objectCandidate.toString(), classToCreate); + } catch (Exception e) { + //todo - return error to user? + throw new CoreException(new ErrorCode.ErrorCodeBuilder() + .withCategory(ErrorCategory.APPLICATION) + .withMessage("Can't create Node Type from " + nodeTypeId).build()); + } + } + + private boolean isMainServiceTemplate(String fileName) { + return fileName.endsWith(mainStName); + } + + private boolean isMetadataFile(String fileName) { + return fileName.equals(metadataFile); + } + + private boolean isGlobalServiceTemplate(String fileName) { + return fileName.endsWith(globalStName); + } + + private boolean isDefinitions(String fileName) { + return fileName.startsWith(definitionsDir); + } + + private String getTemplateNameFromStName(String serviceTemplateName) { + String fileNameWithoutDirectories; + fileNameWithoutDirectories = getFileNameWithoutDirectories(serviceTemplateName); + return fileNameWithoutDirectories.split("ServiceTemplate")[0]; + } + + private String getFileNameWithoutDirectories(String serviceTemplateName) { + String fileNameWithoutDirectories; + if (serviceTemplateName.contains("/")) { + String[] split = serviceTemplateName.split("/"); + fileNameWithoutDirectories = split[split.length - 1]; + } else if (serviceTemplateName.contains(File.separator)) { + String[] split = serviceTemplateName.split(Pattern.quote(File.separator)); + fileNameWithoutDirectories = split[split.length - 1]; + } else { + fileNameWithoutDirectories = serviceTemplateName; + } + return fileNameWithoutDirectories; + } +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterManagerImpl.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterManagerImpl.java new file mode 100644 index 0000000000..520e41817e --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterManagerImpl.java @@ -0,0 +1,49 @@ +package org.openecomp.core.impl; + +import org.openecomp.core.converter.ToscaConverter; +import org.openecomp.core.converter.api.ToscaConverterManager; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; + +import java.lang.reflect.Constructor; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class ToscaConverterManagerImpl implements ToscaConverterManager { + + private static List<ToscaConverter> toscaConverters; + private static final String toscaConverterFileName = "ToscaConverters.json"; + + static { + toscaConverters = getConvertersList(); + } + + @Override + public ToscaServiceModel convert(String csarName, FileContentHandler fileContentHandler) { + return null; + } + + private static List<ToscaConverter> getConvertersList(){ + List<ToscaConverter> toscaConvertersList = new ArrayList<>(); + Map<String, String> convertersMap = FileUtils.readViaInputStream(toscaConverterFileName, + stream -> JsonUtil.json2Object(stream, Map.class)); + return getToscaConvertersList(toscaConvertersList, convertersMap); + } + + private static List<ToscaConverter> getToscaConvertersList( + List<ToscaConverter> toscaConvertersList, Map<String, String> convertersMap) { + for(String implClassName : convertersMap.values()){ + try{ + Class<?> clazz = Class.forName(implClassName); + Constructor<?> constructor = clazz.getConstructor(); + toscaConvertersList.add((ToscaConverter) constructor.newInstance()); + }catch (Exception e){ + continue; + } + } + return toscaConvertersList; + } +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/factory/ToscaConverterFactoryImpl.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/factory/ToscaConverterFactoryImpl.java new file mode 100644 index 0000000000..e04cd239c9 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/factory/ToscaConverterFactoryImpl.java @@ -0,0 +1,12 @@ +package org.openecomp.core.impl.factory; + +import org.openecomp.core.converter.ToscaConverter; +import org.openecomp.core.converter.factory.ToscaConverterFactory; +import org.openecomp.core.impl.ToscaConverterImpl; + +public class ToscaConverterFactoryImpl extends ToscaConverterFactory { + @Override + public ToscaConverter createInterface() { + return new ToscaConverterImpl(); + } +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/services/ServiceTemplateReaderServiceImpl.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/services/ServiceTemplateReaderServiceImpl.java new file mode 100644 index 0000000000..fa8532546c --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/services/ServiceTemplateReaderServiceImpl.java @@ -0,0 +1,76 @@ +package org.openecomp.core.impl.services; + +import org.openecomp.core.converter.ServiceTemplateReaderService; +import org.openecomp.sdc.common.errors.CoreException; +import org.openecomp.sdc.common.errors.ErrorCategory; +import org.openecomp.sdc.common.errors.ErrorCode; +import org.openecomp.sdc.tosca.services.YamlUtil; +import org.yaml.snakeyaml.error.YAMLException; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +import static org.openecomp.core.converter.datatypes.Constants.*; + +public class ServiceTemplateReaderServiceImpl implements ServiceTemplateReaderService { + + private Map<String, Object> readServiceTemplate = new HashMap<>(); + + public ServiceTemplateReaderServiceImpl(byte[] serviceTemplateContent){ + this.readServiceTemplate = readServiceTemplate(serviceTemplateContent); + } + + @Override + public Map<String, Object> readServiceTemplate(byte[] serviceTemplateContent) { + + Map<String, Object> readSt = + new YamlUtil().yamlToObject(new String(serviceTemplateContent), Map.class); + + return readSt; + } + + @Override + public Object getMetadata(){ + return this.readServiceTemplate.get(metadata); + } + + @Override + public Object getToscaVersion(){ + return this.readServiceTemplate.get(definitionVersion); + } + + @Override + public Object getNodeTypes(){ + return this.readServiceTemplate.get(nodeTypes); + } + + @Override + public Object getTopologyTemplate(){ + return this.readServiceTemplate.get(topologyTemplate); + } + + @Override + public Map<String, Object> getNodeTemplates(){ + return Objects.isNull(this.getTopologyTemplate()) ? new HashMap<>() + : (Map<String, Object>) ((Map<String, Object>)this.getTopologyTemplate()).get(nodeTemplates); + } + + @Override + public Map<String, Object> getInputs(){ + return Objects.isNull(this.getTopologyTemplate()) ? new HashMap<>() + : (Map<String, Object>) ((Map<String, Object>)this.getTopologyTemplate()).get(inputs); + } + + @Override + public Map<String, Object> getOutputs(){ + return Objects.isNull(this.getTopologyTemplate()) ? new HashMap<>() + : (Map<String, Object>) ((Map<String, Object>)this.getTopologyTemplate()).get(outputs); + } + + @Override + public Map<String, Object> getSubstitutionMappings(){ + return Objects.isNull(this.getTopologyTemplate()) ? new HashMap<>() + : (Map<String, Object>) ((Map<String, Object>)this.getTopologyTemplate()).get(substitutionMappings); + } +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/resources/ToscaConverters.json b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/resources/ToscaConverters.json new file mode 100644 index 0000000000..e1cddeb854 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/resources/ToscaConverters.json @@ -0,0 +1,3 @@ +{ + "ToscaConverter" : "org.openecomp.core.converter.impl.ToscaConverterImpl" +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConverterImplTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConverterImplTest.java new file mode 100644 index 0000000000..4abed3e316 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConverterImplTest.java @@ -0,0 +1,193 @@ +package org.openecomp.core.converter.impl; + +import org.apache.commons.collections.CollectionUtils; +import org.junit.Test; +import org.openecomp.core.converter.ToscaConverter; +import org.openecomp.core.impl.ToscaConverterImpl; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; +import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate; +import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment; +import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; +import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil; +import org.openecomp.sdc.tosca.services.YamlUtil; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.nio.file.NotDirectoryException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.ListIterator; +import java.util.Map; +import java.util.Objects; + +import static org.junit.Assert.assertEquals; +import static org.openecomp.core.converter.datatypes.Constants.globalStName; +import static org.openecomp.core.converter.datatypes.Constants.mainStName; + +public class ToscaConverterImplTest { + + private static ToscaConverter toscaConverter = new ToscaConverterImpl(); + private static String inputFilesPath; + private static String outputFilesPath; + private static Map<String, ServiceTemplate> expectedOutserviceTemplates; + + + @Test + public void testConvertMainSt() throws IOException { + inputFilesPath = "/mock/toscaConverter/convertMainSt/in"; + outputFilesPath = "/mock/toscaConverter/convertMainSt/out"; + + FileContentHandler fileContentHandler = + createFileContentHandlerFromInput(inputFilesPath); + + expectedOutserviceTemplates = new HashMap<>(); + loadServiceTemplates(outputFilesPath, new ToscaExtensionYamlUtil(), + expectedOutserviceTemplates); + + ToscaServiceModel toscaServiceModel = toscaConverter.convert(fileContentHandler); + ServiceTemplate mainSt = toscaServiceModel.getServiceTemplates().get(mainStName); + + checkSTResults(expectedOutserviceTemplates, null, mainSt); + } + + + + private FileContentHandler createFileContentHandlerFromInput(String inputFilesPath) + throws IOException { + URL inputFilesUrl = this.getClass().getResource(inputFilesPath); + String path = inputFilesUrl.getPath(); + File directory = new File(path); + File[] listFiles = directory.listFiles(); + + FileContentHandler fileContentHandler = new FileContentHandler(); + insertFilesIntoFileContentHandler(listFiles, fileContentHandler); + return fileContentHandler; + } + + private void insertFilesIntoFileContentHandler(File[] listFiles, + FileContentHandler fileContentHandler) + throws IOException { + byte[] fileContent; + if(CollectionUtils.isEmpty(fileContentHandler.getFileList())) { + fileContentHandler.setFiles(new HashMap<>()); + } + + for (File file : listFiles) { + if(!file.isDirectory()) { + try (FileInputStream fis = new FileInputStream(file)) { + fileContent = FileUtils.toByteArray(fis); + fileContentHandler.addFile(file.getPath(), fileContent); + } + }else{ + File[] currFileList = file.listFiles(); + insertFilesIntoFileContentHandler(currFileList, fileContentHandler); + } + + } + } + + private void checkSTResults( + Map<String, ServiceTemplate> expectedOutserviceTemplates, + ServiceTemplate gloablSubstitutionServiceTemplate, ServiceTemplate mainServiceTemplate) { + YamlUtil yamlUtil = new YamlUtil(); + if (Objects.nonNull(gloablSubstitutionServiceTemplate)) { + assertEquals("difference global substitution service template: ", + yamlUtil.objectToYaml(expectedOutserviceTemplates.get(globalStName)), + yamlUtil.objectToYaml(gloablSubstitutionServiceTemplate)); + } + if (Objects.nonNull(mainServiceTemplate)) { + assertEquals("difference main service template: ", + yamlUtil.objectToYaml(expectedOutserviceTemplates.get(mainStName)), + yamlUtil.objectToYaml(mainServiceTemplate)); + } + } + + public static void loadServiceTemplates(String serviceTemplatesPath, + ToscaExtensionYamlUtil toscaExtensionYamlUtil, + Map<String, ServiceTemplate> serviceTemplates) + throws IOException { + URL urlFile = ToscaConverterImplTest.class.getResource(serviceTemplatesPath); + if (urlFile != null) { + File pathFile = new File(urlFile.getFile()); + File[] files = pathFile.listFiles(); + if (files != null) { + addServiceTemplateFiles(serviceTemplates, files, toscaExtensionYamlUtil); + } else { + throw new NotDirectoryException(serviceTemplatesPath); + } + } else { + throw new NotDirectoryException(serviceTemplatesPath); + } + } + + private static void addServiceTemplateFiles(Map<String, ServiceTemplate> serviceTemplates, + File[] files, + ToscaExtensionYamlUtil toscaExtensionYamlUtil) + throws IOException { + for (File file : files) { + try (InputStream yamlFile = new FileInputStream(file)) { + ServiceTemplate serviceTemplateFromYaml = + toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); + createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml, toscaExtensionYamlUtil); + serviceTemplates.put(file.getName(), serviceTemplateFromYaml); + try { + yamlFile.close(); + } catch (IOException ignore) { + } + } catch (FileNotFoundException e) { + throw e; + } catch (IOException e) { + throw e; + } + } + } + + private static void createConcreteRequirementObjectsInServiceTemplate(ServiceTemplate + serviceTemplateFromYaml, + ToscaExtensionYamlUtil + toscaExtensionYamlUtil) { + + if (serviceTemplateFromYaml == null + || serviceTemplateFromYaml.getTopology_template() == null + || serviceTemplateFromYaml.getTopology_template().getNode_templates() == null) { + return; + } + + //Creating concrete objects + Map<String, NodeTemplate> nodeTemplates = + serviceTemplateFromYaml.getTopology_template().getNode_templates(); + for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) { + NodeTemplate nodeTemplate = entry.getValue(); + List<Map<String, RequirementAssignment>> requirements = nodeTemplate.getRequirements(); + List<Map<String, RequirementAssignment>> concreteRequirementList = new ArrayList<>(); + if (requirements != null) { + ListIterator<Map<String, RequirementAssignment>> reqListIterator = requirements + .listIterator(); + while (reqListIterator.hasNext()){ + Map<String, RequirementAssignment> requirement = reqListIterator.next(); + Map<String, RequirementAssignment> concreteRequirement = new HashMap<>(); + for (Map.Entry<String, RequirementAssignment> reqEntry : requirement.entrySet()) { + RequirementAssignment requirementAssignment = (toscaExtensionYamlUtil + .yamlToObject(toscaExtensionYamlUtil.objectToYaml(reqEntry.getValue()), + RequirementAssignment.class)); + concreteRequirement.put(reqEntry.getKey(), requirementAssignment); + concreteRequirementList.add(concreteRequirement); + reqListIterator.remove(); + } + } + requirements.clear(); + requirements.addAll(concreteRequirementList); + nodeTemplate.setRequirements(requirements); + } + System.out.println(); + //toscaExtensionYamlUtil.yamlToObject(nodeTemplate, NodeTemplate.class); + } + } +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConvertorDefinitionsTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConvertorDefinitionsTest.java new file mode 100644 index 0000000000..1ee8f6c05f --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConvertorDefinitionsTest.java @@ -0,0 +1,56 @@ +package org.openecomp.core.converter.impl; + +import org.apache.commons.io.IOUtils; +import org.junit.Test; +import org.openecomp.core.impl.GlobalSubstitutionServiceTemplate; +import org.openecomp.core.impl.ToscaConverterImpl; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; +import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; + +import java.net.URL; +import java.util.Map; +import java.util.Set; + +import static org.openecomp.sdc.common.utils.CommonUtil.*; +import static org.junit.Assert.*; +import static org.openecomp.core.impl.GlobalSubstitutionServiceTemplate.*; +public class ToscaConvertorDefinitionsTest { + + + @Test + public void loadCsar() throws Exception { + URL resource = ToscaConvertorDefinitionsTest.class.getResource("/csar/vCSCF.csar"); + byte[] bytes = IOUtils.toByteArray(resource); + assertNotNull(bytes); + FileContentHandler contentMap = validateAndUploadFileContent(OnboardingTypesEnum.CSAR, bytes); + ToscaConverterImpl toscaConverter = new ToscaConverterImpl(); + ToscaServiceModel convert = toscaConverter.convert(contentMap); + Map<String, ServiceTemplate> serviceTemplates = convert.getServiceTemplates(); + assertTrue(serviceTemplates.containsKey(GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME)); + ServiceTemplate serviceTemplate = serviceTemplates.get(GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME); + + assertNotNull(serviceTemplate); + assertTrue(serviceTemplate instanceof GlobalSubstitutionServiceTemplate); + + assertNotNull(serviceTemplate.getMetadata()); + assertFalse(serviceTemplate.getMetadata().isEmpty()); + assertTrue(serviceTemplate.getMetadata().containsKey(TEMPLATE_NAME_PROPERTY)); + + assertNotNull(serviceTemplate.getImports()); + assertFalse(serviceTemplate.getImports().isEmpty()); + assertEquals(1 ,serviceTemplate.getImports().size()); + assertTrue(serviceTemplate.getImports().get(0).containsKey(HEAT_INDEX)); + + assertEquals(DEFININTION_VERSION, serviceTemplate.getTosca_definitions_version()); + + + assertNotNull(serviceTemplate.getNode_types()); + assertEquals(1, serviceTemplate.getNode_types().size()); + Set<String> keys = serviceTemplate.getNode_types().keySet(); + assertTrue(keys.contains("tosca.nodes.nfv.ext.zte.VNF.vCSCF")); + } + + +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/csar/vCSCF.csar b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/csar/vCSCF.csar Binary files differnew file mode 100644 index 0000000000..f1b77554e4 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/csar/vCSCF.csar diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Artifacts/checksum.lst b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Artifacts/checksum.lst new file mode 100644 index 0000000000..701f14d45d --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Artifacts/checksum.lst @@ -0,0 +1 @@ +Definitions/openovnf__vPCRF.yaml:75bd8963ecc09bf769d0bb5cb475314d diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Artifacts/csar.meta b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Artifacts/csar.meta new file mode 100644 index 0000000000..aac2fed3c3 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Artifacts/csar.meta @@ -0,0 +1,3 @@ +Type:NFAR +Version:v1.0 +Provider:Huawei
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Definitions/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Definitions/GlobalSubstitutionTypesServiceTemplate.yaml new file mode 100644 index 0000000000..a88171701e --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/Definitions/GlobalSubstitutionTypesServiceTemplate.yaml @@ -0,0 +1,60 @@ +node_types: + tosca.nodes.nfv.VDU.Compute: + attributes: + private_address: + type: string + public_address: + type: string + networks: + type: string + ports: + type: string + capabilities: + scalable: + type: tosca.capabilities.Scalable + virtual_compute: + type: tosca.capabilities.nfv.VirtualCompute + endpoint: + type: tosca.capabilities.Endpoint.Admin + os: + type: tosca.capabilities.OperatingSystem + virtual_binding: + type: tosca.capabilities.nfv.VirtualBindable + host: + type: tosca.capabilities.Container + binding: + type: tosca.capabilities.network.Bindable + monitoring_parameter: + type: tosca.capabilities.nfv.Metric + derived_from: tosca.nodes.Root + properties: + configurable_properties: + entry_schema: + type: tosca.datatypes.nfv.VnfcConfigurableProperties + type: map + name: + type: string + nfvi_constraints: + entry_schema: + type: string + required: false + type: list + descrption: + type: string + boot_order: + entry_schema: + type: string + required: false + type: list + requirements: + - local_storage: + capability: tosca.capabilities.Attachment + occurrences: + - 0 + - UNBOUNDED + - virtual_storage: + capability: tosca.capabilities.nfv.VirtualStorage + occurrences: + - 0 + - UNBOUNDED +tosca_definitions_version: tosca_simple_yaml_1_0 diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/MainServiceTemplate.mf b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/MainServiceTemplate.mf new file mode 100644 index 0000000000..e45f002332 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/MainServiceTemplate.mf @@ -0,0 +1,12 @@ +Manifest-Version: 1.0 + +Name: Entry-Definitions +Name: MainServiceTemplate.yaml + +Name: Definitions\GlobalSubstitutionTypesServiceTemplate.yaml + +Name: Artifacts\install.sh + +Name: Artifacts\create_stack.sh + +Name: Licenses\license.xml diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/MainServiceTemplate.yaml new file mode 100644 index 0000000000..041afbacf8 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/MainServiceTemplate.yaml @@ -0,0 +1,551 @@ +imports: +- openovnf__tosca.nodes.nfv.VNF.vPCRF.yaml +- openonfv__tosca.capabilities.Scalable.yaml +- openonfv__tosca.capabilities.nfv.Metric.yaml +- openonfv__tosca.nodes.nfv.VnfVirtualLinkDesc.yaml +- openonfv__tosca.capabilities.network.Bindable.yaml +- openonfv__tosca.capabilities.Attachment.yaml +- openonfv__tosca.capabilities.nfv.VirtualBindable.yaml +- openonfv__tosca.capabilities.nfv.VirtualLinkable.yaml +- openonfv__tosca.requirements.nfv.VirtualStorage.yaml +- openonfv__tosca.nodes.nfv.VDU.VirtualStorage.yaml +- openonfv__tosca.relationships.nfv.VirtualBindsTo.yaml +- openonfv__tosca.nodes.nfv.VDU.Compute.yaml +- openonfv__tosca.relationships.nfv.VirtualLinksTo.yaml +- openonfv__tosca.capabilities.nfv.VirtualCompute.yaml +- openonfv__tosca.capabilities.Container.yaml +- openonfv__tosca.capabilities.nfv.VirtualStorage.yaml +- openonfv__tosca.requirements.nfv.VirtualBinding.yaml +- openonfv__tosca.capabilities.Endpoint.Admin.yaml +- openonfv__tosca.capabilities.OperatingSystem.yaml +- openonfv__tosca.nodes.nfv.VduCpd.yaml +- openonfv__tosca.relationships.nfv.VDU.AttachedTo.yaml + +metadata: + vendor: Huawei + csarVersion: v1.0 + csarProvider: Huawei + id: vPCRF_NF_HW + version: v1.0 + csarType: NFAR + name: vPCRF + vnfdVersion: v1.0 + vnfmType: hwvnfm + +node_types: + org.openecomp.resource.vfc.nodes.heat.nat_fw: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + +topology_template: + node_templates: + PUPDU_Storage: + attributes: + tosca_name: PUPDU_Storage + properties: + id: PUPDU_Storage + size_of_storage: 200G + type_of_storage: volume + type: tosca.nodes.nfv.VDU.VirtualStorage + USRSU: + attributes: + tosca_name: USRSU + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 24G + requested_additional_capabilities: {} + virtual_cpu: + num_virtual_cpu: 4 + properties: + configurable_properties: + test: {"additional_vnfc_configurable_properties":{"aaa":"1"}} + name: USRSU + descrption: the virtual machine of USRSU + requirements: + - virtual_storage: + capability: virtual_storage + node: USRSU_Storage + - local_storage: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VDU.Compute + USPID3_VduCpd_Fabric: + attributes: + tosca_name: USPID3_VduCpd_Fabric + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: USPID3 + - virtual_link: + capability: virtual_linkable + node: Fabric + type: tosca.nodes.nfv.VduCpd + PUPDU_VduCpd_Base: + attributes: + tosca_name: PUPDU_VduCpd_Base + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: PUPDU + - virtual_link: + capability: virtual_linkable + node: Base + type: tosca.nodes.nfv.VduCpd + OMU_VduCpd_Fabric: + attributes: + tosca_name: OMU_VduCpd_Fabric + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: OMU + - virtual_link: + capability: virtual_linkable + node: Fabric + type: tosca.nodes.nfv.VduCpd + USPID3: + attributes: + tosca_name: USPID3 + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 24G + requested_additional_capabilities: {} + virtual_cpu: + num_virtual_cpu: 4 + properties: + configurable_properties: + test: {"additional_vnfc_configurable_properties":{"aaa":"1"}} + name: USPID3 + descrption: the virtual machine of USPID3 + requirements: + - virtual_storage: + capability: virtual_storage + node: USPID3_Storage + - local_storage: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VDU.Compute + UPIRU_VduCpd_Base: + attributes: + tosca_name: UPIRU_VduCpd_Base + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: UPIRU + - virtual_link: + capability: virtual_linkable + node: Base + type: tosca.nodes.nfv.VduCpd + OMU2ManageNet: + attributes: + tosca_name: OMU2ManageNet + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + node: tosca.nodes.Root + - virtual_link: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VduCpd + OMU_Storage: + attributes: + tosca_name: OMU_Storage + properties: + id: OMU_Storage + size_of_storage: 256G + rdma_enabled: false + type_of_storage: volume + type: tosca.nodes.nfv.VDU.VirtualStorage + UPSPU: + attributes: + tosca_name: UPSPU + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 24G + requested_additional_capabilities: {} + virtual_cpu: + num_virtual_cpu: 4 + properties: + configurable_properties: + test: {"additional_vnfc_configurable_properties":{"aaa":"1"}} + name: UPSPU + descrption: the virtual machine of UPSPU + requirements: + - virtual_storage: + capability: virtual_storage + node: UPSPU_Storage + - local_storage: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VDU.Compute + PUPDU_VduCpd_Fabric: + attributes: + tosca_name: PUPDU_VduCpd_Fabric + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: PUPDU + - virtual_link: + capability: virtual_linkable + node: Fabric + type: tosca.nodes.nfv.VduCpd + USPID2BossNet: + attributes: + tosca_name: USPID2BossNet + properties: + role: root + layer_protocol: ethernet + requirements: + - virtual_binding: + capability: virtual_binding + node: USPID3 + - virtual_link: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VduCpd + OMU_VduCpd_Base: + attributes: + tosca_name: OMU_VduCpd_Base + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: OMU + - virtual_link: + capability: virtual_linkable + node: Base + type: tosca.nodes.nfv.VduCpd + USPID3_Storage: + attributes: + tosca_name: USPID3_Storage + properties: + id: USPID3_Storage + size_of_storage: 300G + type_of_storage: volume + type: tosca.nodes.nfv.VDU.VirtualStorage + UPIRU2DataNet2: + attributes: + tosca_name: UPIRU2DataNet2 + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: UPIRU + - virtual_link: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VduCpd + USPID2ManageNet: + attributes: + tosca_name: USPID2ManageNet + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: USPID3 + - virtual_link: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VduCpd + UPIRU2DataNet3: + attributes: + tosca_name: UPIRU2DataNet3 + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: UPIRU + - virtual_link: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VduCpd + PUPDU2DataNet3: + attributes: + tosca_name: PUPDU2DataNet3 + properties: + role: root + layer_protocol: ethernet + requirements: + - virtual_binding: + capability: virtual_binding + node: PUPDU + - virtual_link: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VduCpd + USRSU2DataNet1: + attributes: + tosca_name: USRSU2DataNet1 + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: USRSU + - virtual_link: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VduCpd + USRSU2DataNet2: + attributes: + tosca_name: USRSU2DataNet2 + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: USRSU + - virtual_link: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VduCpd + UPIRU_Storage: + attributes: + tosca_name: UPIRU_Storage + properties: + id: UPIRU_Storage + size_of_storage: 4G + type_of_storage: volume + type: tosca.nodes.nfv.VDU.VirtualStorage + PUPDU2SignalNet1: + attributes: + tosca_name: PUPDU2SignalNet1 + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: PUPDU + - virtual_link: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VduCpd + UPIRU2DataNet1: + attributes: + tosca_name: UPIRU2DataNet1 + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: UPIRU + - virtual_link: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VduCpd + USPID3_VduCpd_Base: + attributes: + tosca_name: USPID3_VduCpd_Base + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: USPID3 + - virtual_link: + capability: virtual_linkable + node: Base + type: tosca.nodes.nfv.VduCpd + Base: + attributes: + tosca_name: Base + properties: + vl_flavours: + flavours: test2 + connectivity_type: + layer_protocol: ipv4 + flow_pattern: + type: tosca.nodes.nfv.VnfVirtualLinkDesc + USRSU_Storage: + attributes: + tosca_name: USRSU_Storage + properties: + id: USRSU_Storage + size_of_storage: 200G + type_of_storage: volume + type: tosca.nodes.nfv.VDU.VirtualStorage + UPSPU_VduCpd_Base: + attributes: + tosca_name: UPSPU_VduCpd_Base + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: UPSPU + - virtual_link: + capability: virtual_linkable + node: Base + type: tosca.nodes.nfv.VduCpd + PUPDU: + attributes: + tosca_name: PUPDU + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 24G + requested_additional_capabilities: {} + virtual_cpu: + num_virtual_cpu: 4 + properties: + configurable_properties: + test: {"additional_vnfc_configurable_properties":{"aaa":"1"}} + name: PUPDU + descrption: the virtual machine of PUPDU + requirements: + - virtual_storage: + capability: virtual_storage + node: PUPDU_Storage + - local_storage: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VDU.Compute + USRSU_VduCpd_Base: + attributes: + tosca_name: USRSU_VduCpd_Base + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: USRSU + - virtual_link: + capability: virtual_linkable + node: Base + type: tosca.nodes.nfv.VduCpd + OMU: + attributes: + tosca_name: OMU + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 16G + requested_additional_capabilities: {} + virtual_cpu: + num_virtual_cpu: 4 + properties: + configurable_properties: + test: {"additional_vnfc_configurable_properties":{"aaa":"1"}} + name: OMU + descrption: the virtual machine of OMU + requirements: + - virtual_storage: + capability: virtual_storage + node: OMU_Storage + - local_storage: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VDU.Compute + UPIRU_VduCpd_Fabric: + attributes: + tosca_name: UPIRU_VduCpd_Fabric + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: UPIRU + - virtual_link: + capability: virtual_linkable + node: Fabric + type: tosca.nodes.nfv.VduCpd + UPSPU_Storage: + attributes: + tosca_name: UPSPU_Storage + properties: + id: UPSPU_Storage + size_of_storage: 4G + type_of_storage: volume + type: tosca.nodes.nfv.VDU.VirtualStorage + PUPDU2ManageNet: + attributes: + tosca_name: PUPDU2ManageNet + properties: + role: root + layer_protocol: ethernet + requirements: + - virtual_binding: + capability: virtual_binding + node: PUPDU + - virtual_link: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VduCpd + USRSU_VduCpd_Fabric: + attributes: + tosca_name: USRSU_VduCpd_Fabric + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: USRSU + - virtual_link: + capability: virtual_linkable + node: Fabric + type: tosca.nodes.nfv.VduCpd + UPIRU2SignalNet1: + attributes: + tosca_name: UPIRU2SignalNet1 + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: UPIRU + - virtual_link: + node: tosca.nodes.Root + type: tosca.nodes.nfv.VduCpd + Fabric: + attributes: + tosca_name: Fabric + properties: + vl_flavours: + flavours: test1 + connectivity_type: + layer_protocol: ipv4 + flow_pattern: + type: tosca.nodes.nfv.VnfVirtualLinkDesc + UPSPU_VduCpd_Fabric: + attributes: + tosca_name: UPSPU_VduCpd_Fabric + properties: + role: root + layer_protocol: ipv4 + requirements: + - virtual_binding: + capability: virtual_binding + node: UPSPU + - virtual_link: + capability: virtual_linkable + node: Fabric + type: tosca.nodes.nfv.VduCpd + + substitution_mappings: + node_type: tosca.nodes.nfv.VNF.vPCRF +tosca_definitions_version: tosca_simple_yaml_1_0
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/TOSCA-Metadata/TOSCA.meta b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/TOSCA-Metadata/TOSCA.meta new file mode 100644 index 0000000000..69f62ca864 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/in/TOSCA-Metadata/TOSCA.meta @@ -0,0 +1,135 @@ +TOSCA-Meta-Version: 1.0 +CSAR-Version: 1.0 +Created-By: Winery 0.1.37-SNAPSHOT +Entry-Definitions: Definitions/openovnf__vPCRF.yaml + +Name: Definitions/openovnf__vPCRF.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openovnf__tosca.nodes.nfv.VNF.vPCRF.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.capabilities.Scalable.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.capabilities.nfv.Metric.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.nodes.nfv.VnfVirtualLinkDesc.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.capabilities.network.Bindable.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.capabilities.Attachment.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.capabilities.nfv.VirtualBindable.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.capabilities.nfv.VirtualLinkable.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.requirements.nfv.VirtualStorage.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.nodes.nfv.VDU.VirtualStorage.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.relationships.nfv.VirtualBindsTo.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.nodes.nfv.VDU.Compute.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.relationships.nfv.VirtualLinksTo.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.capabilities.nfv.VirtualCompute.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.capabilities.Container.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.capabilities.nfv.VirtualStorage.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.requirements.nfv.VirtualBinding.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.capabilities.Endpoint.Admin.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.capabilities.OperatingSystem.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.nodes.nfv.VduCpd.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.relationships.nfv.VDU.AttachedTo.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openonfv__tosca.requirements.nfv.VirtualLink.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: Definitions/openovnf__tosca.nodes.nfv.VNF.yaml +Content-Type: application/vnd.oasis.tosca.definitions + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VDU.VirtualStorage/propertiesdefinition/Properties.xsd +Content-Type: text/xml + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VnfVirtualLinkDesc/appearance/bigIcon.png +Content-Type: image/png + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VnfVirtualLinkDesc/appearance/smallIcon.png +Content-Type: image/png + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VDU.Compute/propertiesdefinition/Properties.xsd +Content-Type: text/xml + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VduCpd/propertiesdefinition/Properties.xsd +Content-Type: text/xml + +Name: capabilitytypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.capabilities.nfv.VirtualCompute/propertiesdefinition/Properties.xsd +Content-Type: text/xml + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv%2Fvnf/tosca.nodes.nfv.VNF/propertiesdefinition/Properties.xsd +Content-Type: text/xml + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VDU.VirtualStorage/appearance/bigIcon.png +Content-Type: image/png + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VDU.VirtualStorage/appearance/smallIcon.png +Content-Type: image/png + +Name: capabilitytypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.capabilities.Container/propertiesdefinition/Properties.xsd +Content-Type: text/xml + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VDU.Compute/appearance/bigIcon.png +Content-Type: image/png + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VDU.Compute/appearance/smallIcon.png +Content-Type: image/png + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv%2Fvnf/tosca.nodes.nfv.VNF.vPCRF/propertiesdefinition/Properties.xsd +Content-Type: text/xml + +Name: capabilitytypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.capabilities.OperatingSystem/propertiesdefinition/Properties.xsd +Content-Type: text/xml + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VnfVirtualLinkDesc/propertiesdefinition/Properties.xsd +Content-Type: text/xml + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VduCpd/appearance/bigIcon.png +Content-Type: image/png + +Name: nodetypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.nodes.nfv.VduCpd/appearance/smallIcon.png +Content-Type: image/png + +Name: capabilitytypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.capabilities.Scalable/propertiesdefinition/Properties.xsd +Content-Type: text/xml + +Name: relationshiptypes/http%3A%2F%2Fwww.open-o.org%2Ftosca%2Fnfv/tosca.relationships.nfv.VDU.AttachedTo/propertiesdefinition/Properties.xsd +Content-Type: text/xml + + diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/out/MainServiceTemplate.yaml new file mode 100644 index 0000000000..77bfcac710 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/mock/toscaConverter/convertMainSt/out/MainServiceTemplate.yaml @@ -0,0 +1,546 @@ +tosca_definitions_version: tosca_simple_yaml_1_0 +metadata: + vnfdVersion: v1.0 + template_name: Main + vendor: Huawei + csarVersion: v1.0 + vnfmType: hwvnfm + csarProvider: Huawei + name: vPCRF + id: vPCRF_NF_HW + version: v1.0 + csarType: NFAR +imports: +- openecomp_heat_index: + file: openecomp-heat/_index.yml +- GlobalSubstitutionTypes: + file: GlobalSubstitutionTypesServiceTemplate.yaml +node_types: + org.openecomp.resource.vfc.nodes.heat.nat_fw: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server +topology_template: + node_templates: + PUPDU_Storage: + type: tosca.nodes.nfv.VDU.VirtualStorage + properties: + id: PUPDU_Storage + size_of_storage: 200G + type_of_storage: volume + attributes: + tosca_name: PUPDU_Storage + USRSU: + type: tosca.nodes.nfv.VDU.Compute + properties: + configurable_properties: + test: + additional_vnfc_configurable_properties: + aaa: '1' + name: USRSU + descrption: the virtual machine of USRSU + attributes: + tosca_name: USRSU + requirements: + - virtual_storage: + capability: virtual_storage + node: USRSU_Storage + - local_storage: + node: tosca.nodes.Root + capabilities: + - virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 24G + requested_additional_capabilities: { + } + virtual_cpu: + num_virtual_cpu: 4.0 + USPID3_VduCpd_Fabric: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: USPID3_VduCpd_Fabric + requirements: + - virtual_binding: + capability: virtual_binding + node: USPID3 + - virtual_link: + capability: virtual_linkable + node: Fabric + PUPDU_VduCpd_Base: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: PUPDU_VduCpd_Base + requirements: + - virtual_binding: + capability: virtual_binding + node: PUPDU + - virtual_link: + capability: virtual_linkable + node: Base + OMU_VduCpd_Fabric: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: OMU_VduCpd_Fabric + requirements: + - virtual_binding: + capability: virtual_binding + node: OMU + - virtual_link: + capability: virtual_linkable + node: Fabric + USPID3: + type: tosca.nodes.nfv.VDU.Compute + properties: + configurable_properties: + test: + additional_vnfc_configurable_properties: + aaa: '1' + name: USPID3 + descrption: the virtual machine of USPID3 + attributes: + tosca_name: USPID3 + requirements: + - virtual_storage: + capability: virtual_storage + node: USPID3_Storage + - local_storage: + node: tosca.nodes.Root + capabilities: + - virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 24G + requested_additional_capabilities: { + } + virtual_cpu: + num_virtual_cpu: 4.0 + UPIRU_VduCpd_Base: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: UPIRU_VduCpd_Base + requirements: + - virtual_binding: + capability: virtual_binding + node: UPIRU + - virtual_link: + capability: virtual_linkable + node: Base + OMU2ManageNet: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: OMU2ManageNet + requirements: + - virtual_binding: + node: tosca.nodes.Root + - virtual_link: + node: tosca.nodes.Root + OMU_Storage: + type: tosca.nodes.nfv.VDU.VirtualStorage + properties: + id: OMU_Storage + size_of_storage: 256G + rdma_enabled: false + type_of_storage: volume + attributes: + tosca_name: OMU_Storage + UPSPU: + type: tosca.nodes.nfv.VDU.Compute + properties: + configurable_properties: + test: + additional_vnfc_configurable_properties: + aaa: '1' + name: UPSPU + descrption: the virtual machine of UPSPU + attributes: + tosca_name: UPSPU + requirements: + - virtual_storage: + capability: virtual_storage + node: UPSPU_Storage + - local_storage: + node: tosca.nodes.Root + capabilities: + - virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 24G + requested_additional_capabilities: { + } + virtual_cpu: + num_virtual_cpu: 4.0 + PUPDU_VduCpd_Fabric: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: PUPDU_VduCpd_Fabric + requirements: + - virtual_binding: + capability: virtual_binding + node: PUPDU + - virtual_link: + capability: virtual_linkable + node: Fabric + USPID2BossNet: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ethernet + attributes: + tosca_name: USPID2BossNet + requirements: + - virtual_binding: + capability: virtual_binding + node: USPID3 + - virtual_link: + node: tosca.nodes.Root + OMU_VduCpd_Base: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: OMU_VduCpd_Base + requirements: + - virtual_binding: + capability: virtual_binding + node: OMU + - virtual_link: + capability: virtual_linkable + node: Base + USPID3_Storage: + type: tosca.nodes.nfv.VDU.VirtualStorage + properties: + id: USPID3_Storage + size_of_storage: 300G + type_of_storage: volume + attributes: + tosca_name: USPID3_Storage + UPIRU2DataNet2: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: UPIRU2DataNet2 + requirements: + - virtual_binding: + capability: virtual_binding + node: UPIRU + - virtual_link: + node: tosca.nodes.Root + USPID2ManageNet: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: USPID2ManageNet + requirements: + - virtual_binding: + capability: virtual_binding + node: USPID3 + - virtual_link: + node: tosca.nodes.Root + UPIRU2DataNet3: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: UPIRU2DataNet3 + requirements: + - virtual_binding: + capability: virtual_binding + node: UPIRU + - virtual_link: + node: tosca.nodes.Root + PUPDU2DataNet3: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ethernet + attributes: + tosca_name: PUPDU2DataNet3 + requirements: + - virtual_binding: + capability: virtual_binding + node: PUPDU + - virtual_link: + node: tosca.nodes.Root + USRSU2DataNet1: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: USRSU2DataNet1 + requirements: + - virtual_binding: + capability: virtual_binding + node: USRSU + - virtual_link: + node: tosca.nodes.Root + USRSU2DataNet2: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: USRSU2DataNet2 + requirements: + - virtual_binding: + capability: virtual_binding + node: USRSU + - virtual_link: + node: tosca.nodes.Root + UPIRU_Storage: + type: tosca.nodes.nfv.VDU.VirtualStorage + properties: + id: UPIRU_Storage + size_of_storage: 4G + type_of_storage: volume + attributes: + tosca_name: UPIRU_Storage + PUPDU2SignalNet1: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: PUPDU2SignalNet1 + requirements: + - virtual_binding: + capability: virtual_binding + node: PUPDU + - virtual_link: + node: tosca.nodes.Root + UPIRU2DataNet1: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: UPIRU2DataNet1 + requirements: + - virtual_binding: + capability: virtual_binding + node: UPIRU + - virtual_link: + node: tosca.nodes.Root + USPID3_VduCpd_Base: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: USPID3_VduCpd_Base + requirements: + - virtual_binding: + capability: virtual_binding + node: USPID3 + - virtual_link: + capability: virtual_linkable + node: Base + Base: + type: tosca.nodes.nfv.VnfVirtualLinkDesc + properties: + vl_flavours: + flavours: test2 + connectivity_type: + layer_protocol: ipv4 + flow_pattern: null + attributes: + tosca_name: Base + USRSU_Storage: + type: tosca.nodes.nfv.VDU.VirtualStorage + properties: + id: USRSU_Storage + size_of_storage: 200G + type_of_storage: volume + attributes: + tosca_name: USRSU_Storage + UPSPU_VduCpd_Base: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: UPSPU_VduCpd_Base + requirements: + - virtual_binding: + capability: virtual_binding + node: UPSPU + - virtual_link: + capability: virtual_linkable + node: Base + PUPDU: + type: tosca.nodes.nfv.VDU.Compute + properties: + configurable_properties: + test: + additional_vnfc_configurable_properties: + aaa: '1' + name: PUPDU + descrption: the virtual machine of PUPDU + attributes: + tosca_name: PUPDU + requirements: + - virtual_storage: + capability: virtual_storage + node: PUPDU_Storage + - local_storage: + node: tosca.nodes.Root + capabilities: + - virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 24G + requested_additional_capabilities: { + } + virtual_cpu: + num_virtual_cpu: 4.0 + USRSU_VduCpd_Base: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: USRSU_VduCpd_Base + requirements: + - virtual_binding: + capability: virtual_binding + node: USRSU + - virtual_link: + capability: virtual_linkable + node: Base + OMU: + type: tosca.nodes.nfv.VDU.Compute + properties: + configurable_properties: + test: + additional_vnfc_configurable_properties: + aaa: '1' + name: OMU + descrption: the virtual machine of OMU + attributes: + tosca_name: OMU + requirements: + - virtual_storage: + capability: virtual_storage + node: OMU_Storage + - local_storage: + node: tosca.nodes.Root + capabilities: + - virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 16G + requested_additional_capabilities: { + } + virtual_cpu: + num_virtual_cpu: 4.0 + UPIRU_VduCpd_Fabric: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: UPIRU_VduCpd_Fabric + requirements: + - virtual_binding: + capability: virtual_binding + node: UPIRU + - virtual_link: + capability: virtual_linkable + node: Fabric + UPSPU_Storage: + type: tosca.nodes.nfv.VDU.VirtualStorage + properties: + id: UPSPU_Storage + size_of_storage: 4G + type_of_storage: volume + attributes: + tosca_name: UPSPU_Storage + PUPDU2ManageNet: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ethernet + attributes: + tosca_name: PUPDU2ManageNet + requirements: + - virtual_binding: + capability: virtual_binding + node: PUPDU + - virtual_link: + node: tosca.nodes.Root + USRSU_VduCpd_Fabric: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: USRSU_VduCpd_Fabric + requirements: + - virtual_binding: + capability: virtual_binding + node: USRSU + - virtual_link: + capability: virtual_linkable + node: Fabric + UPIRU2SignalNet1: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: UPIRU2SignalNet1 + requirements: + - virtual_binding: + capability: virtual_binding + node: UPIRU + - virtual_link: + node: tosca.nodes.Root + Fabric: + type: tosca.nodes.nfv.VnfVirtualLinkDesc + properties: + vl_flavours: + flavours: test1 + connectivity_type: + layer_protocol: ipv4 + flow_pattern: null + attributes: + tosca_name: Fabric + UPSPU_VduCpd_Fabric: + type: tosca.nodes.nfv.VduCpd + properties: + role: root + layer_protocol: ipv4 + attributes: + tosca_name: UPSPU_VduCpd_Fabric + requirements: + - virtual_binding: + capability: virtual_binding + node: UPSPU + - virtual_link: + capability: virtual_linkable + node: Fabric + substitution_mappings: + node_type: tosca.nodes.nfv.VNF.vPCRF diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/pom.xml b/openecomp-be/lib/openecomp-tosca-converter-lib/pom.xml new file mode 100644 index 0000000000..e789e09965 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/pom.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.openecomp.sdc</groupId> + <artifactId>openecomp-sdc-lib</artifactId> + <version>1.1.0-SNAPSHOT</version> + </parent> + + <artifactId>openecomp-tosca-converter-lib</artifactId> + <version>1.1.0-SNAPSHOT</version> + <packaging>pom</packaging> + + <modules> + <module>openecomp-tosca-converter-api</module> + <module>openecomp-tosca-converter-core</module> + </modules> + + +</project>
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/datatypes/ToscaServiceModel.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/datatypes/ToscaServiceModel.java index 0fcaafa1c2..722c286f50 100644 --- a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/datatypes/ToscaServiceModel.java +++ b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/datatypes/ToscaServiceModel.java @@ -33,6 +33,7 @@ import java.util.Map; */ public class ToscaServiceModel implements AsdcModel { private FileContentHandler artifactFiles; + private FileContentHandler externalFiles; private Map<String, ServiceTemplate> serviceTemplates; private String entryDefinitionServiceTemplate; @@ -54,6 +55,15 @@ public class ToscaServiceModel implements AsdcModel { this.entryDefinitionServiceTemplate = entryDefinitionServiceTemplate; } + public ToscaServiceModel(FileContentHandler artifactFiles, + FileContentHandler externalFiles, + Map<String, ServiceTemplate> serviceTemplates, + String entryDefinitionServiceTemplate) { + this.artifactFiles = artifactFiles; + this.externalFiles = externalFiles; + this.serviceTemplates = serviceTemplates; + this.entryDefinitionServiceTemplate = entryDefinitionServiceTemplate; + } /** * Gets artifact files. @@ -113,4 +123,12 @@ public class ToscaServiceModel implements AsdcModel { public static ToscaServiceModel getClonedServiceModel(ToscaServiceModel toscaServiceModel) { return ToscaServiceModel.class.cast(DataModelUtil.getClonedObject(toscaServiceModel)); } + + public FileContentHandler getExternalFiles() { + return externalFiles; + } + + public void setExternalFiles(FileContentHandler externalFiles) { + this.externalFiles = externalFiles; + } } diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImpl.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImpl.java index dc2ed6c76b..45e6c3deef 100644 --- a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImpl.java +++ b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImpl.java @@ -492,7 +492,8 @@ public class ToscaAnalyzerServiceImpl implements ToscaAnalyzerService { toscaServiceModel.getServiceTemplates().get(fetchFileNameForImport(importFile, serviceTemplate.getMetadata() == null ? null : serviceTemplate.getMetadata().get("filename"))); - if (filesScanned.contains(ToscaUtil.getServiceTemplateFileName(template))) { + if (Objects.isNull(template) || + filesScanned.contains(ToscaUtil.getServiceTemplateFileName(template))) { continue; } else { filesScanned.add(ToscaUtil.getServiceTemplateFileName(template)); diff --git a/openecomp-be/lib/pom.xml b/openecomp-be/lib/pom.xml index 5095578db4..df1b854a31 100644 --- a/openecomp-be/lib/pom.xml +++ b/openecomp-be/lib/pom.xml @@ -31,5 +31,7 @@ <module>openecomp-logging-lib</module> <module>openecomp-healing-lib</module> <module>openecomp-sdc-activity-log-lib</module> + <module>openecomp-tosca-converter-lib</module> + <module>openecomp-sdc-orchestration-lib</module> </modules> </project> diff --git a/openecomp-be/pom.xml b/openecomp-be/pom.xml index 92d5bccf0b..6147ea8fe4 100644 --- a/openecomp-be/pom.xml +++ b/openecomp-be/pom.xml @@ -111,6 +111,26 @@ </execution> </executions> </plugin> + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + <version>${jacoco.version}</version> + <executions> + <execution> + <goals> + <goal>prepare-agent</goal> + </goals> + </execution> + <execution> + <id>report</id> + <phase>prepare-package</phase> + <goals> + <goal>report</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> </build> @@ -172,7 +192,7 @@ <artifactId>groovy-all</artifactId> <version>${groovy.version}</version> </dependency> - <dependency> + <dependency> <groupId>org.codehaus.janino</groupId> <artifactId>janino</artifactId> <version>${janino.version}</version> diff --git a/openecomp-be/tools/install/database/schemaTemplates/composition/deployment.ftl b/openecomp-be/tools/install/database/schemaTemplates/composition/deployment.ftl index 67271c79e2..2bd0b40705 100644 --- a/openecomp-be/tools/install/database/schemaTemplates/composition/deployment.ftl +++ b/openecomp-be/tools/install/database/schemaTemplates/composition/deployment.ftl @@ -1,39 +1,38 @@ { - "$schema": "http://json-schema.org/draft-04/schema#", - "type": "object", - "properties": { - "model": { - "type": "string", - "maxLength": 30, - "pattern": "^[A-Za-z0-9_,-]*$" - }, - "description": { - "type": "string", +"$schema": "http://json-schema.org/draft-04/schema#", +"type": "object", +"properties": { +"model": { +"type": "string", +"maxLength": 30 +}, +"description": { +"type": "string", - "maxLength": 300 - }, - "featureGroupId":{ - "type": "string", - "enum": [<#if featureGroupIds??> <#list featureGroupIds as featureGroupId> - "${featureGroupId}"<#sep>,</#list> </#if> - ] - }, - "componentComputeAssociations": { - "type": "array", - "properties": { - "vfcid": { - "type": "string" - }, - "computeFlavorid": { - "type": "string" - } - }, - "additionalProperties": false - } +"maxLength": 300 +}, +"featureGroupId":{ +"type": "string", +"enum": [<#if featureGroupIds??> <#list featureGroupIds as featureGroupId> +"${featureGroupId}"<#sep>,</#list> </#if> +] +}, +"componentComputeAssociations": { +"type": "array", +"properties": { +"vfcid": { +"type": "string" +}, +"computeFlavorid": { +"type": "string" +} +}, +"additionalProperties": false +} - }, - "additionalProperties": false, - "required": [ - "model" - ] +}, +"additionalProperties": false, +"required": [ +"model" +] }
\ No newline at end of file diff --git a/openecomp-be/tools/zusammen-tools/src/main/resources/zusammenMainTool.sh b/openecomp-be/tools/zusammen-tools/src/main/resources/zusammenMainTool.sh index da043b130d..42c347f4e8 100644 --- a/openecomp-be/tools/zusammen-tools/src/main/resources/zusammenMainTool.sh +++ b/openecomp-be/tools/zusammen-tools/src/main/resources/zusammenMainTool.sh @@ -1,14 +1,26 @@ #!/bin/bash ########################################################################################################### -# script name - cassandra2zusammen.sh -# run script - ./cassandra2zusammen.sh -# This script migrates ASDC 1st class citizen entities and their sub-entities from Cassandra to -# Zusammen. -# This script should be run when upgrading from 1702 to 1707 -########################################################################################################### +# script name - zusammenMainTool.sh +# run script - ./zusammenMainTool.sh +# 1. Export all - ./zusammenMainTool.sh -c EXPORT +# 2. Export one item ./zusammenMainTool.sh -c EXPORT -i ${elementId} +# 3. Import one item - ./zusammenMainTool.sh -c IMPORT -f ${fileName} -i ${elementId} +# 4. Import all - ./zusammenMainTool.sh -c IMPORT -f ${fileName} +# 5. Reset old version - ./zusammenMainTool.sh -c RESET_OLD_VERSION +# +########################################################################################################## + +OSTYPE=`uname -a | grep -iq ubuntu; echo $?` +echo "${OSTYPE}" +if [ ${OSTYPE} -eq 0 ] +then + CONF_FILE_LOCATION="/opt/app/jetty/base/be/config/catalog-be/configuration.yaml" +else + CONF_FILE_LOCATION="/apps/jetty/base/be/config/catalog-be/configuration.yaml" +fi +echo "Configuration file location: ${CONF_FILE_LOCATION}" -# change exist package and service templates in db -java -Dlog.home=/apps/jetty/base/be/logs -Dconfiguration.yaml=/apps/jetty/base/be/config/catalog-be/configuration.yaml -jar openecomp-zusammen-tools-1.0-SNAPSHOT.jar org.openecomp.core.tools.main.ZusammenMainTool $1 $2 $3 $4 $5 $6 -STATUS="${?}" echo "${STATUS}" echo "All log messages for the zusammenMainTool migration process are in /apps/jetty/base/be/logs/ASDC/ASDC-BE/zusammen_tool_debug.log" +java -Dlog.home=/apps/jetty/base/be/logs -Dconfiguration.yaml=${CONF_FILE_LOCATION} -jar openecomp-zusammen-tools-1.0-SNAPSHOT.jar org.openecomp.core.tools.main.ZusammenMainTool $1 $2 $3 $4 $5 $6 +STATUS="${?}" echo "${STATUS}" diff --git a/openecomp-ui/package.json b/openecomp-ui/package.json index 82b5dea888..0d22c479db 100644 --- a/openecomp-ui/package.json +++ b/openecomp-ui/package.json @@ -2,7 +2,7 @@ "name": "dox-ui", "version": "1.0.0", "description": "", - "author": "OPENECOMP", + "author": "ECOMP", "license": "SEE LICENSE IN LICENSE", "scripts": { "start": "gulp dev && webpack-dev-server --progress", @@ -21,13 +21,12 @@ "dependencies": { "classnames": "^2.2.5", "core-js": "^2.4.0", - "d3": "^4.10.0", + "d3": "^3.5.16", "dox-sequence-diagram-ui": "file:../dox-sequence-diagram-ui", "intl": "^1.0.1", "intl-format-cache": "^2.0.5", "intl-messageformat": "^1.2.0", "intl-relativeformat": "^1.2.0", - "jquery": "^2.1.4", "lodash": "^4.13.1", "md5": "^2.1.0", "randomstring": "^1.1.5", @@ -36,7 +35,7 @@ "react-dom": "~15.3.2", "react-dropzone": "3.7.3", "react-redux": "^4.4.1", - "react-select": "^1.0.0-beta13", + "react-select": "1.0.0-rc.5", "react-sortable": "^1.2.0", "redux": "^3.3.1", "restful-js": "^0.7.0", diff --git a/openecomp-ui/pom.xml b/openecomp-ui/pom.xml index 026f129b93..2920832b17 100644 --- a/openecomp-ui/pom.xml +++ b/openecomp-ui/pom.xml @@ -1,5 +1,6 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.openecomp.sdc</groupId> @@ -14,11 +15,12 @@ <relativePath>../onboarding</relativePath> </parent> + <properties> + <maven.war.plugin.version>3.0.0</maven.war.plugin.version> + </properties> + <build> <plugins> - <!-- ============================================= --> - <!-- Clean dist folder --> - <!-- ============================================= --> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>2.6.1</version> @@ -38,10 +40,12 @@ <directory>${basedir}/node_modules</directory> </fileset> <fileset> - <directory>${basedir}/../dox-sequence-diagram-ui/dist</directory> + <directory>${basedir}/../dox-sequence-diagram-ui/dist + </directory> </fileset> <fileset> - <directory>${basedir}/../dox-sequence-diagram-ui/node_modules</directory> + <directory>${basedir}/../dox-sequence-diagram-ui/node_modules + </directory> </fileset> </filesets> </configuration> @@ -58,8 +62,8 @@ <version>1.4</version> <configuration> - <installDirectory>${project.parent.parent.basedir}</installDirectory> - </configuration> + <installDirectory>${project.parent.parent.basedir}</installDirectory> + </configuration> <executions> @@ -75,13 +79,13 @@ </execution> <execution> - <id>npm set progress off</id> - <goals> - <goal>npm</goal> - </goals> - <configuration> - <arguments>set progress=false</arguments> - </configuration> + <id>npm set progress off</id> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>set progress=false</arguments> + </configuration> </execution> <execution> @@ -90,11 +94,34 @@ <goal>npm</goal> </goals> <configuration> - <workingDirectory>${project.basedir}/../dox-sequence-diagram-ui</workingDirectory> + <workingDirectory>${project.basedir}/../dox-sequence-diagram-ui + </workingDirectory> <arguments>install</arguments> </configuration> </execution> + <!-- Fix jQuery dependency in restful-js --> + <execution> + <id>npm restful-js</id> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>install restful-js</arguments> + </configuration> + </execution> + <execution> + <id>npm install restful-js dependencies</id> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <workingDirectory>${project.basedir}/node_modules/restful-js + </workingDirectory> + <arguments>install --production</arguments> + </configuration> + </execution> + <execution> <id>npm install</id> <goals> @@ -143,11 +170,27 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> - <version>3.0.0</version> + <version>${maven.war.plugin.version}</version> + <configuration> + <webResources> + <resource> + <directory>${basedir}/target/dist</directory> + </resource> + </webResources> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-war-plugin</artifactId> + <version>${maven.war.plugin.version}</version> <configuration> + <webXml>webapp-onboarding\WEB-INF\web.xml</webXml> <webResources> <resource> - <directory>${basedir}/target/dist</directory> + <directory>external-resources/healthcheck</directory> + <includes> + <include>v1.0/healthcheck</include> + </includes> </resource> </webResources> </configuration> diff --git a/openecomp-ui/resources/scss/components/_submitErrorResponse.scss b/openecomp-ui/resources/scss/components/_submitErrorResponse.scss index ac5dd278b0..cd5284059d 100644 --- a/openecomp-ui/resources/scss/components/_submitErrorResponse.scss +++ b/openecomp-ui/resources/scss/components/_submitErrorResponse.scss @@ -32,7 +32,7 @@ .collapse-right { .svg-icon { &.__chevronDown { - transform: rotate(270deg); + transform: rotate(270deg); } } } diff --git a/openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss b/openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss index bd47fbb334..c8d8cf4e0b 100644 --- a/openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss +++ b/openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss @@ -1,27 +1,27 @@ .vsp-attachments-view { position: relative; - #attachments-tabs { - .nav-tabs { - background-color: $tlv-gray; - box-shadow: none; - border-bottom: 1px solid $light-gray; - & > li { - & > a { - @extend .heading-2; - padding-left: 0; - padding-right: 0; - margin-right: 40px; - }; - &.active > a {color: $blue;}; - } - } - } + #attachments-tabs { + .nav-tabs { + background-color: $tlv-gray; + box-shadow: none; + border-bottom: 1px solid $light-gray; + & > li { + & > a { + @extend .heading-2; + padding-left: 0; + padding-right: 0; + margin-right: 40px; + }; + &.active > a {color: $blue;}; + } + } + } .attachments-view-controllers { position: absolute; right: 40px; top: 15px; - display: flex; + display: flex; .icon-component { diff --git a/openecomp-ui/resources/scss/modules/_softwareProductLandingPage.scss b/openecomp-ui/resources/scss/modules/_softwareProductLandingPage.scss index 9b0375d24a..28b54cc78f 100644 --- a/openecomp-ui/resources/scss/modules/_softwareProductLandingPage.scss +++ b/openecomp-ui/resources/scss/modules/_softwareProductLandingPage.scss @@ -164,27 +164,29 @@ color: $light-blue; } } - .software-product-landing-view-top-block-col-upl { - @extend .flex; - text-align: center; - flex-direction: column; - justify-content: center; - border: 2px dashed $light-gray; - margin-bottom: 20px; - @extend .body-1; - align-items: center; - .upload-btn { - padding: 15px 55px; + } - } - .drag-text { - color: $blue; - @extend .body-1-semibold; - } - .or-text { - margin-top: 10px; - margin-bottom: 10px; - } + .software-product-landing-view-top-block-col-upl { + @extend .flex; + height: 215px; + text-align: center; + flex-direction: column; + justify-content: center; + border: 2px dashed $light-gray; + margin-bottom: 20px; + @extend .body-1; + align-items: center; + .upload-btn { + padding: 15px 55px; + + } + .drag-text { + color: $blue; + @extend .body-1-semibold; + } + .or-text { + margin-top: 10px; + margin-bottom: 10px; } } } diff --git a/openecomp-ui/src/nfvo-components/SubmitErrorResponse.jsx b/openecomp-ui/src/nfvo-components/SubmitErrorResponse.jsx index 8d45d86a9d..40daeff9c5 100644 --- a/openecomp-ui/src/nfvo-components/SubmitErrorResponse.jsx +++ b/openecomp-ui/src/nfvo-components/SubmitErrorResponse.jsx @@ -115,7 +115,7 @@ const UploadErrorList = ({items}) => { {item.list.map((error, i) => <ErrorMessage key={i} warning={error.level === 'WARNING'} error={error.message}/> )} </div> );} - + return ( <div> {errors} @@ -152,10 +152,10 @@ const ErrorHeader = ({errorType, collapsed, onClick}) => { const ErrorMessage = ({error, warning}) => { return ( <ListGroupItem className='error-code-list-item'> - <SVGIcon - name={warning ? 'exclamationTriangleLine' : 'error'} - color={warning ? 'warning' : 'negative'} /> - <span className='icon-label'>{error}</span> + <SVGIcon + name={warning ? 'exclamationTriangleLine' : 'error'} + color={warning ? 'warning' : 'negative'} /> + <span className='icon-label'>{error}</span> </ListGroupItem> ); }; diff --git a/openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js index 24ba05e303..fc65083bff 100644 --- a/openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js @@ -31,11 +31,13 @@ import OnboardActionHelper from './onboard/OnboardActionHelper.js'; import SoftwareProductComponentsMonitoringAction from './softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js'; import {actionTypes, enums} from './OnboardingConstants.js'; import SoftwareProductComponentsImageActionHelper from './softwareProduct/components/images/SoftwareProductComponentsImageActionHelper.js'; -import {navigationItems as SoftwareProductNavigationItems, actionTypes as SoftwareProductActionTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; +import {navigationItems as SoftwareProductNavigationItems, actionTypes as SoftwareProductActionTypes, onboardingOriginTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; import ActivityLogActionHelper from 'sdc-app/common/activity-log/ActivityLogActionHelper.js'; import licenseModelOverviewActionHelper from 'sdc-app/onboarding/licenseModel/overview/licenseModelOverviewActionHelper.js'; import store from 'sdc-app/AppStore.js'; import {selectedButton as licenseModelOverviewSelectedButton} from 'sdc-app/onboarding/licenseModel/overview/LicenseModelOverviewConstants.js'; +import {tabsMapping as attachmentsTabsMapping} from 'sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js'; +import SoftwareProductAttachmentsActionHelper from 'sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js'; function setCurrentScreen(dispatch, screen, props = {}) { dispatch({ @@ -165,7 +167,9 @@ export default { SoftwareProductActionHelper.loadSoftwareProductDetailsData(dispatch, {licenseModelId, licensingVersion}); SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(dispatch, {softwareProductId, version: newVersion}); - SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(dispatch, {softwareProductId, version: newVersion}); + if(response[0].onboardingOrigin === onboardingOriginTypes.ZIP) { + SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(dispatch, {softwareProductId, version: newVersion}); + } setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE, {softwareProductId, licenseModelId, version: newVersion}); }); }, @@ -175,11 +179,19 @@ export default { setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_DETAILS, {softwareProductId, version}); }, - navigateToSoftwareProductAttachments(dispatch, {softwareProductId, version}) { + navigateToSoftwareProductAttachmentsSetupTab(dispatch, {softwareProductId, version}) { SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(dispatch, {softwareProductId, version}); + SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {activeTab: attachmentsTabsMapping.SETUP}); setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS, {softwareProductId, version}); }, + navigateToSoftwareProductAttachmentsValidationTab(dispatch, {softwareProductId, version}) { + SoftwareProductActionHelper.processAndValidateHeatCandidate(dispatch, {softwareProductId, version}).then(() => { + SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {activeTab: attachmentsTabsMapping.VALIDATION}); + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS, {softwareProductId, version}); + }); + }, + navigateToSoftwareProductProcesses(dispatch, {softwareProductId, version}) { if (softwareProductId) { SoftwareProductProcessesActionHelper.fetchProcessesList(dispatch, {softwareProductId, version}); diff --git a/openecomp-ui/src/sdc-app/onboarding/OnboardingPunchOut.jsx b/openecomp-ui/src/sdc-app/onboarding/OnboardingPunchOut.jsx index aea5fc6406..c1f3251281 100644 --- a/openecomp-ui/src/sdc-app/onboarding/OnboardingPunchOut.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/OnboardingPunchOut.jsx @@ -28,7 +28,6 @@ import Onboard from './onboard/Onboard.js'; import LicenseModel from './licenseModel/LicenseModel.js'; import LicenseModelOverview from './licenseModel/overview/LicenseModelOverview.js'; import ActivityLog from 'sdc-app/common/activity-log/ActivityLog.js'; -import {doesHeatDataExist} from './softwareProduct/attachments/SoftwareProductAttachmentsUtils.js'; import LicenseAgreementListEditor from './licenseModel/licenseAgreement/LicenseAgreementListEditor.js'; import FeatureGroupListEditor from './licenseModel/featureGroups/FeatureGroupListEditor.js'; @@ -55,7 +54,8 @@ import SoftwareProductComponentsMonitoring from './softwareProduct/components/mo import { navigationItems as SoftwareProductNavigationItems, onboardingMethod as onboardingMethodTypes, - actionTypes as SoftwareProductActionTypes + actionTypes as SoftwareProductActionTypes, + onboardingOriginTypes } from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; import {statusEnum as VCItemStatus} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; @@ -314,7 +314,12 @@ export default class OnboardingPunchOut { OnboardingActionHelper.navigateToSoftwareProductDetails(dispatch, {softwareProductId, version: currentSoftwareProductVersion}); break; case enums.BREADCRUMS.SOFTWARE_PRODUCT_ATTACHMENTS: - OnboardingActionHelper.navigateToSoftwareProductAttachments(dispatch, {softwareProductId, version: currentSoftwareProductVersion}); + if(softwareProduct.onboardingOrigin === onboardingOriginTypes.ZIP) { + OnboardingActionHelper.navigateToSoftwareProductAttachmentsSetupTab(dispatch, {softwareProductId, version: currentSoftwareProductVersion}); + } + else if(softwareProduct.onboardingOrigin === onboardingOriginTypes.CSAR) { + OnboardingActionHelper.navigateToSoftwareProductAttachmentsValidationTab(dispatch, {softwareProductId, version: currentSoftwareProductVersion}); + } break; case enums.BREADCRUMS.SOFTWARE_PRODUCT_PROCESSES: OnboardingActionHelper.navigateToSoftwareProductProcesses(dispatch, {softwareProductId, version: currentSoftwareProductVersion}); @@ -415,9 +420,9 @@ export default class OnboardingPunchOut { handleStoreChange() { let {currentScreen, licenseModelList, softwareProductList, softwareProduct: {softwareProductEditor: {data = {onboardingMethod: ''}}, - softwareProductComponents: {componentsList}, softwareProductAttachments: {heatSetup}}} = store.getState(); - let {onboardingMethod} = data; - let breadcrumbsData = {onboardingMethod, currentScreen, licenseModelList, softwareProductList, componentsList, heatSetup}; + softwareProductComponents: {componentsList}}} = store.getState(); + let {onboardingMethod, onboardingOrigin} = data; + let breadcrumbsData = {onboardingMethod, currentScreen, licenseModelList, softwareProductList, componentsList, onboardingOrigin}; if (currentScreen.forceBreadCrumbsUpdate || !isEqual(breadcrumbsData, this.prevBreadcrumbsData) || this.breadcrumbsPrefixSelected) { this.prevBreadcrumbsData = breadcrumbsData; this.breadcrumbsPrefixSelected = false; @@ -434,7 +439,7 @@ export default class OnboardingPunchOut { } } - buildBreadcrumbs({currentScreen: {screen, props}, onboardingMethod, licenseModelList, softwareProductList, componentsList, heatSetup}) { + buildBreadcrumbs({currentScreen: {screen, props}, onboardingMethod, licenseModelList, softwareProductList, componentsList, onboardingOrigin}) { let screenToBreadcrumb; switch (screen) { case enums.SCREEN.ONBOARDING_CATALOG: @@ -593,7 +598,7 @@ export default class OnboardingPunchOut { key: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENTS, displayText: i18n('Components') }].filter(item => { - let isHeatData = doesHeatDataExist(heatSetup); + let isHeatData = onboardingOrigin !== onboardingOriginTypes.NONE; let isManualMode = onboardingMethod === onboardingMethodTypes.MANUAL; switch (item.key) { case enums.BREADCRUMS.SOFTWARE_PRODUCT_ATTACHMENTS: diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js index c9c95f359e..6426847cfc 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js @@ -22,11 +22,10 @@ import TabulatedEditor from 'src/nfvo-components/editor/TabulatedEditor.jsx'; import {enums} from 'sdc-app/onboarding/OnboardingConstants.js'; import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js'; -import {navigationItems, mapScreenToNavigationItem, onboardingMethod as onboardingMethodTypes} from './SoftwareProductConstants.js'; +import {navigationItems, mapScreenToNavigationItem, onboardingMethod as onboardingMethodTypes, onboardingOriginTypes} from './SoftwareProductConstants.js'; import SoftwareProductActionHelper from './SoftwareProductActionHelper.js'; import SoftwareProductComponentsActionHelper from './components/SoftwareProductComponentsActionHelper.js'; import SoftwareProductDependenciesActionHelper from './dependencies/SoftwareProductDependenciesActionHelper.js'; -import {doesHeatDataExist} from './attachments/SoftwareProductAttachmentsUtils.js'; import HeatSetupActionHelper from './attachments/setup/HeatSetupActionHelper.js'; import { actionsEnum as versionControllerActions } from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; @@ -86,7 +85,7 @@ const buildComponentNavigationBarGroups = ({componentId, meta}) => { const buildNavigationBarProps = ({softwareProduct, meta, screen, componentId, componentsList, mapOfExpandedIds}) => { const {softwareProductEditor: {data: currentSoftwareProduct = {}}} = softwareProduct; - const {id, name, onboardingMethod} = currentSoftwareProduct; + const {id, name, onboardingMethod, onboardingOrigin} = currentSoftwareProduct; const groups = [{ id: id, name: name, @@ -122,7 +121,7 @@ const buildNavigationBarProps = ({softwareProduct, meta, screen, componentId, co id: navigationItems.ATTACHMENTS, name: i18n('Attachments'), disabled: false, - hidden: !doesHeatDataExist(meta.heatSetup), + hidden: onboardingOrigin === onboardingOriginTypes.NONE, meta }, { id: navigationItems.ACTIVITY_LOG, @@ -175,7 +174,7 @@ const buildVersionControllerProps = (softwareProduct) => { function buildMeta({softwareProduct, componentId, softwareProductDependencies}) { const {softwareProductEditor, softwareProductComponents, softwareProductQuestionnaire, softwareProductAttachments} = softwareProduct; const {data: currentSoftwareProduct = {}} = softwareProductEditor; - const {version} = currentSoftwareProduct; + const {version, onboardingOrigin} = currentSoftwareProduct; const isReadOnlyMode = VersionControllerUtils.isReadOnly(currentSoftwareProduct); const {qdata} = softwareProductQuestionnaire; const {heatSetup, heatSetupCache} = softwareProductAttachments; @@ -184,7 +183,7 @@ function buildMeta({softwareProduct, componentId, softwareProductDependencies}) const {componentEditor: {data: componentData = {} , qdata: componentQdata}} = softwareProductComponents; currentComponentMeta = {componentData, componentQdata}; } - const meta = {softwareProduct: currentSoftwareProduct, qdata, version, heatSetup, heatSetupCache, isReadOnlyMode, currentComponentMeta, softwareProductDependencies}; + const meta = {softwareProduct: currentSoftwareProduct, qdata, version, onboardingOrigin, heatSetup, heatSetupCache, isReadOnlyMode, currentComponentMeta, softwareProductDependencies}; return meta; } @@ -280,7 +279,7 @@ const mapActionsToProps = (dispatch, {currentScreen: {screen, props: {softwarePr }, onToggle: (groups, itemIdToExpand) => groups.map(({items}) => SoftwareProductActionHelper.toggleNavigationItems(dispatch, {items, itemIdToExpand})), onNavigate: ({id, meta, version}) => { - let {heatSetup, heatSetupCache} = meta; + let {onboardingOrigin, heatSetup, heatSetupCache} = meta; let heatSetupPopupPromise = screen === enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS ? HeatSetupActionHelper.heatSetupLeaveConfirmation(dispatch, {softwareProductId, heatSetup, heatSetupCache}) : Promise.resolve(); @@ -307,7 +306,12 @@ const mapActionsToProps = (dispatch, {currentScreen: {screen, props: {softwarePr OnboardingActionHelper.navigateToSoftwareProductDependencies(dispatch, {softwareProductId, version}); break; case navigationItems.ATTACHMENTS: - OnboardingActionHelper.navigateToSoftwareProductAttachments(dispatch, {softwareProductId, version}); + if(onboardingOrigin === onboardingOriginTypes.ZIP) { + OnboardingActionHelper.navigateToSoftwareProductAttachmentsSetupTab(dispatch, {softwareProductId, version}); + } + else if(onboardingOrigin === onboardingOriginTypes.CSAR) { + OnboardingActionHelper.navigateToSoftwareProductAttachmentsValidationTab(dispatch, {softwareProductId, version}); + } break; case navigationItems.COMPONENTS: OnboardingActionHelper.navigateToSoftwareProductComponents(dispatch, {softwareProductId, version}); @@ -334,9 +338,7 @@ const mapActionsToProps = (dispatch, {currentScreen: {screen, props: {softwarePr case enums.SCREEN.SOFTWARE_PRODUCT_DEPLOYMENT: case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES: case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING: - props.onSave = () => { - return Promise.resolve(); - }; + props.onSave = () => Promise.resolve(); break; default: props.onSave = ({softwareProduct, qdata}) => SoftwareProductActionHelper.updateSoftwareProduct(dispatch, {softwareProduct, qdata}); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js index d4bee0a876..41306a1c1a 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js @@ -20,7 +20,7 @@ import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseMod import LicenseAgreementActionHelper from 'sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js'; import FeatureGroupsActionHelper from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js'; -import {actionTypes} from './SoftwareProductConstants.js'; +import {actionTypes, onboardingOriginTypes, PRODUCT_QUESTIONNAIRE, forms} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js'; import SoftwareProductComponentsActionHelper from './components/SoftwareProductComponentsActionHelper.js'; import {actionsEnum as VersionControllerActionsEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; @@ -29,10 +29,10 @@ import {actionTypes as featureGroupsActionConstants} from 'sdc-app/onboarding/li import {actionTypes as licenseAgreementActionTypes} from 'sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConstants.js'; import {actionTypes as componentActionTypes} from './components/SoftwareProductComponentsConstants.js'; import ValidationHelper from 'sdc-app/common/helpers/ValidationHelper.js'; -import {PRODUCT_QUESTIONNAIRE} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; import {actionTypes as modalActionTypes} from 'nfvo-components/modal/GlobalModalConstants.js'; import {modalContentMapper} from 'sdc-app/common/modal/ModalContentMapper.js'; import {statusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; +import {actionTypes as commonActionTypes} from 'sdc-app/common/reducers/PlainDataReducerConstants.js'; function baseUrl() { const restPrefix = Configuration.get('restPrefix'); @@ -59,7 +59,9 @@ function putSoftwareProduct(softwareProduct) { licensingVersion: softwareProduct.licensingVersion && softwareProduct.licensingVersion.id ? softwareProduct.licensingVersion : {} , icon: softwareProduct.icon, licensingData: softwareProduct.licensingData, - onboardingMethod: softwareProduct.onboardingMethod + onboardingMethod: softwareProduct.onboardingMethod, + networkPackageName: softwareProduct.networkPackageName, + onboardingOrigin: softwareProduct.onboardingOrigin }); } @@ -267,7 +269,19 @@ const SoftwareProductActionHelper = { .then(() => uploadFile(softwareProductId, formData, version)) .then(response => { if (response.status === 'Success') { - OnboardingActionHelper.navigateToSoftwareProductAttachments(dispatch, {softwareProductId, version}); + dispatch({ + type: commonActionTypes.DATA_CHANGED, + deltaData: {onboardingOrigin: response.onboardingOrigin}, + formName: forms.VENDOR_SOFTWARE_PRODUCT_DETAILS + }); + switch(response.onboardingOrigin){ + case onboardingOriginTypes.ZIP: + OnboardingActionHelper.navigateToSoftwareProductAttachmentsSetupTab(dispatch, {softwareProductId, version}); + break; + case onboardingOriginTypes.CSAR: + OnboardingActionHelper.navigateToSoftwareProductAttachmentsValidationTab(dispatch, {softwareProductId, version}); + break; + } } else { throw new Error(parseUploadErrorMsg(response.errors)); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js index 0379ee5d4a..2c094ac36a 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js @@ -39,7 +39,7 @@ export const navigationItems = keyMirror({ GENERAL: 'general', PROCESS_DETAILS: 'process-details', DEPLOYMENT_FLAVORS: 'deployment-flavor', - NETWORKS: 'networks', + NETWORKS: 'networks', IMAGES: 'images', ATTACHMENTS: 'attachments', ACTIVITY_LOG: 'activity-log', @@ -54,7 +54,13 @@ export const navigationItems = keyMirror({ export const onboardingMethod = { MANUAL: 'Manual', - HEAT: 'HEAT' + NETWORK_PACKAGE: 'NetworkPackage' +}; + +export const onboardingOriginTypes = { + NONE: 'none', + ZIP: 'zip', + CSAR: 'csar' }; export const forms = keyMirror({ diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductReducer.js index 977a76ac69..d7a6c2ef5c 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductReducer.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductReducer.js @@ -15,6 +15,7 @@ */ import {combineReducers} from 'redux'; import {actionTypes, PRODUCT_QUESTIONNAIRE} from './SoftwareProductConstants.js'; +import SoftwareProductAttachmentsReducer from './attachments/SoftwareProductAttachmentsReducer.js'; import HeatValidationReducer from './attachments/validation/HeatValidationReducer.js'; import HeatSetupReducer from './attachments/setup/HeatSetupReducer.js'; import {actionTypes as heatSetupActionTypes} from './attachments/setup/HeatSetupConstants.js'; @@ -48,6 +49,7 @@ import {IMAGE_QUESTIONNAIRE} from 'sdc-app/onboarding/softwareProduct/components export default combineReducers({ softwareProductAttachments: combineReducers({ + attachmentsDetails: SoftwareProductAttachmentsReducer, heatValidation: HeatValidationReducer, heatSetup: HeatSetupReducer, heatSetupCache: (state = {}, action) => action.type === heatSetupActionTypes.FILL_HEAT_SETUP_CACHE ? action.payload : state diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js index 945de4fc36..f14c988866 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js @@ -23,6 +23,7 @@ import {errorLevels} from 'sdc-app/onboarding/softwareProduct/attachments/valida import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js'; import HeatSetup from './setup/HeatSetup.js'; import {doesHeatDataExist} from './SoftwareProductAttachmentsUtils.js'; +import SoftwareProductAttachmentsActionHelper from './SoftwareProductAttachmentsActionHelper.js'; import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; @@ -30,7 +31,7 @@ export const mapStateToProps = (state) => { let { softwareProduct: { softwareProductEditor:{data: currentSoftwareProduct = {}}, - softwareProductAttachments: {heatSetup, heatSetupCache, heatValidation : {errorList}} + softwareProductAttachments: {attachmentsDetails: {activeTab}, heatSetup, heatSetupCache, heatValidation : {errorList}} } } = state; @@ -47,7 +48,7 @@ export const mapStateToProps = (state) => { let isReadOnlyMode = currentSoftwareProduct && currentSoftwareProduct.version ? VersionControllerUtils.isReadOnly(currentSoftwareProduct) : false; - let {version} = currentSoftwareProduct; + let {version, onboardingOrigin} = currentSoftwareProduct; return { isValidationAvailable: unassigned.length === 0 && modules.length > 0, heatSetup, @@ -56,7 +57,9 @@ export const mapStateToProps = (state) => { goToOverview, HeatSetupComponent: HeatSetup, isReadOnlyMode, - version + version, + onboardingOrigin, + activeTab }; }; @@ -83,7 +86,8 @@ export const mapActionsToProps = (dispatch, {softwareProductId}) => { onProcessAndValidate: ({heatData, heatDataCache, isReadOnlyMode, version}) => { return HeatSetupActionHelper.processAndValidateHeat(dispatch, {softwareProductId, heatData, heatDataCache, isReadOnlyMode, version}); - } + }, + setActiveTab: ({activeTab}) => SoftwareProductAttachmentsActionHelper.setActiveTab(dispatch, {activeTab}) }; }; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js new file mode 100644 index 0000000000..ae4a615a40 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js @@ -0,0 +1,26 @@ +/*! + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +import {actionTypes} from './SoftwareProductAttachmentsConstants'; + +export default { + setActiveTab(dispatch, {activeTab}) { + dispatch({ + type: actionTypes.SET_ACTIVE_TAB, + activeTab + }); + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js index b0410d1566..67265909d7 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js @@ -13,7 +13,13 @@ * or implied. See the License for the specific language governing * permissions and limitations under the License. */ +import keyMirror from 'nfvo-utils/KeyMirror.js'; + export const tabsMapping = { SETUP: 1, VALIDATION: 2 }; + +export const actionTypes = keyMirror({ + SET_ACTIVE_TAB: null +}); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsReducer.js new file mode 100644 index 0000000000..5f6538ab7e --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsReducer.js @@ -0,0 +1,25 @@ +/*! + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +import {actionTypes} from './SoftwareProductAttachmentsConstants.js'; + +export default (state = [], action) => { + switch (action.type) { + case actionTypes.SET_ACTIVE_TAB: + return {activeTab: action.activeTab}; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx index 3da26cc20f..8c59b2b1cc 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx @@ -20,34 +20,34 @@ import {tabsMapping} from './SoftwareProductAttachmentsConstants.js'; import i18n from 'nfvo-utils/i18n/i18n.js'; import SVGIcon from 'sdc-ui/lib/react/SVGIcon.js'; import HeatValidation from './validation/HeatValidation.js'; +import {onboardingOriginTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; class HeatScreenView extends Component { static propTypes = { isValidationAvailable: PropTypes.bool, - goToOverview: PropTypes.bool - }; - - state = { - activeTab: tabsMapping.SETUP + goToOverview: PropTypes.bool, + setActiveTab: PropTypes.function }; render() { - let {isValidationAvailable, isReadOnlyMode, heatDataExist, onDownload, softwareProductId, onProcessAndValidate, heatSetup, HeatSetupComponent, onGoToOverview, version, ...other} = this.props; + let {isValidationAvailable, isReadOnlyMode, heatDataExist, onDownload, softwareProductId, onProcessAndValidate, + heatSetup, HeatSetupComponent, onGoToOverview, version, onboardingOrigin, activeTab, setActiveTab, ...other} = this.props; + return ( <div className='vsp-attachments-view'> <div className='attachments-view-controllers'> - {(this.state.activeTab === tabsMapping.SETUP) && + {(activeTab === tabsMapping.SETUP) && <SVGIcon disabled={heatDataExist ? false : true} name='download' className='icon-component' - label={i18n('Download HEAT')} + label={i18n('Export Validation')} labelPosition='right' color='secondary' onClick={heatDataExist ? () => onDownload({heatCandidate: heatSetup, isReadOnlyMode, version}) : undefined} data-test-id='download-heat'/>} - {(this.state.activeTab === tabsMapping.VALIDATION && softwareProductId) && + {(activeTab === tabsMapping.VALIDATION && softwareProductId) && <SVGIcon disabled={this.props.goToOverview !== true} onClick={this.props.goToOverview ? () => onGoToOverview({version}) : undefined} @@ -60,7 +60,7 @@ class HeatScreenView extends Component { <SVGIcon name='upload' className='icon-component' - label={i18n('Upload New HEAT')} + label={i18n('Upload New File')} labelPosition='right' color='secondary' disabled={isReadOnlyMode} @@ -70,20 +70,20 @@ class HeatScreenView extends Component { ref='hiddenImportFileInput' type='file' name='fileInput' - accept='.zip' + accept='.zip, .csar' onChange={evt => this.handleImport(evt)}/> </div> - <Tabs id='attachments-tabs' activeKey={this.state.activeTab} onSelect={key => this.handleTabPress(key)}> - <Tab eventKey={tabsMapping.SETUP} title='HEAT Setup'> + <Tabs id='attachments-tabs' activeKey={activeTab} onSelect={key => this.handleTabPress(key)}> + <Tab eventKey={tabsMapping.SETUP} title='Setup' disabled={onboardingOrigin === onboardingOriginTypes.CSAR}> <HeatSetupComponent heatDataExist={heatDataExist} - changeAttachmentsTab={tab => this.setState({activeTab: tab})} + changeAttachmentsTab={tab => setActiveTab({activeTab: tab})} onProcessAndValidate={onProcessAndValidate} softwareProductId={softwareProductId} isReadOnlyMode={isReadOnlyMode} version={version}/> </Tab> - <Tab eventKey={tabsMapping.VALIDATION} title='Heat Validation' disabled={!isValidationAvailable}> + <Tab eventKey={tabsMapping.VALIDATION} title='Validation' disabled={!isValidationAvailable}> <HeatValidation {...other}/> </Tab> </Tabs> @@ -92,15 +92,15 @@ class HeatScreenView extends Component { } handleTabPress(key) { - let {heatSetup, heatSetupCache, onProcessAndValidate, isReadOnlyMode, version} = this.props; + let {heatSetup, heatSetupCache, onProcessAndValidate, isReadOnlyMode, version, setActiveTab} = this.props; switch (key) { case tabsMapping.VALIDATION: onProcessAndValidate({heatData: heatSetup, heatDataCache: heatSetupCache, isReadOnlyMode, version}).then( - () => this.setState({activeTab: tabsMapping.VALIDATION}) + () => setActiveTab({activeTab: tabsMapping.VALIDATION}) ); return; case tabsMapping.SETUP: - this.setState({activeTab: tabsMapping.SETUP}); + setActiveTab({activeTab: tabsMapping.SETUP}); return; } } @@ -112,11 +112,13 @@ class HeatScreenView extends Component { formData.append('upload', this.refs.hiddenImportFileInput.files[0]); this.refs.hiddenImportFileInput.value = ''; this.props.onUpload(formData, version); - this.setState({activeTab: tabsMapping.SETUP}); } save() { - return this.props.onSave(this.props.heatSetup, this.props.version); + + return this.props.onboardingOrigin === onboardingOriginTypes.ZIP ? + this.props.onSave(this.props.heatSetup, this.props.version) : + Promise.resolve(); } } diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationReducer.js index f0c10ed457..1d11bdd6b7 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationReducer.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationReducer.js @@ -89,16 +89,16 @@ function createErrorList(node, parent, deep = 0, errorList = []) { return errorList; } -const mapValidationDataToTree = validationData => { - let {heat, volume, network, artifacts, other} = validationData.importStructure || {}; +const mapValidationDataToTree = (validationData, packageName) => { + let {heat, nested, volume, network, artifacts, other} = validationData.importStructure || {}; return { children: [ { - name: 'HEAT', + name: packageName, expanded: true, type: 'heat', header: true, - children: (heat ? heat.map(mapHeatData) : []) + children: (heat ? heat.map(mapHeatData) : nested ? nested.map(mapHeatData) : []) }, ...(artifacts ? [{ name: 'artifacts', @@ -165,7 +165,8 @@ export default (state = {attachmentsTree: {}}, action) => { switch (action.type) { case softwareProductsActionTypes.SOFTWARE_PRODUCT_LOADED: let currentSoftwareProduct = action.response; - let attachmentsTree = currentSoftwareProduct.validationData ? mapValidationDataToTree(currentSoftwareProduct.validationData) : {}; + const packageName = currentSoftwareProduct.networkPackageName; + let attachmentsTree = currentSoftwareProduct.validationData ? mapValidationDataToTree(currentSoftwareProduct.validationData, packageName) : {}; let errorList = createErrorList(attachmentsTree); return { ...state, diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationView.jsx index 2a2f4ac291..80d74b2964 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationView.jsx @@ -93,9 +93,9 @@ function HeatFileTreeHeader(props) { <div onClick={() => props.selectNode(nodeFilters.ALL)} className={classNames({'attachments-tree-header': true, 'header-selected' : props.selectedNode === nodeFilters.ALL})} data-test-id='validation-tree-header'> <div className='tree-header-title' > - <SVGIcon name='zip' color={props.selectedNode === nodeFilters.ALL ? 'primary' : ''} iconClassName='header-icon' /> + {/*<SVGIcon name='zip' color={props.selectedNode === nodeFilters.ALL ? 'primary' : ''} iconClassName='header-icon' />*/} <span className={classNames({'tree-header-title-text' : true, - 'tree-header-title-selected' : props.selectedNode === nodeFilters.ALL})}>{i18n(`HEAT${hasErrors ? ' (Draft)' : ''}`)}</span> + 'tree-header-title-selected' : props.selectedNode === nodeFilters.ALL})}>{i18n(`${props.headerTitle} ${hasErrors ? '(Draft)' : ''}`)}</span> </div> <ErrorsAndWarningsCount errorList={props.errorList} size='large' /> </div>); @@ -134,7 +134,7 @@ class HeatFileTree extends React.Component { <div key={node.name + rand} className={classNames({'tree-block-inside' : !node.header})}> { node.header ? - <HeatFileTreeHeader selectedNode={selectedNode} errorList={this.props.errorList} selectNode={(nodeName) => this.selectNode(nodeName)} /> : + <HeatFileTreeHeader headerTitle={node.name} selectedNode={selectedNode} errorList={this.props.errorList} selectNode={(nodeName) => this.selectNode(nodeName)} /> : <HeatFileTreeRow toggleExpanded={this.props.toggleExpanded} node={node} path={path} selectedNode={selectedNode} selectNode={() => this.selectNode(node.name)} /> } { diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx index 11f3543e39..c7ab3e644c 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx @@ -186,12 +186,12 @@ const OnboardingProcedure = ({onboardingMethod, onDataChanged, genericFieldInfo} <GridSection title={i18n('Onboarding procedure')}> <GridItem colSpan={4}> <Input - label={i18n('HEAT file')} + label={i18n('Network Package')} overlayPos='top' isValid={genericFieldInfo.onboardingMethod.isValid} - checked={onboardingMethod === onboardingMethodConst.HEAT} + checked={onboardingMethod === onboardingMethodConst.NETWORK_PACKAGE} errorText={genericFieldInfo.onboardingMethod.errorText} - onChange={() => onDataChanged({onboardingMethod:'HEAT'},SP_CREATION_FORM_NAME)} + onChange={() => onDataChanged({onboardingMethod: onboardingMethodConst.NETWORK_PACKAGE},SP_CREATION_FORM_NAME)} type='radio' data-test-id='new-vsp-creation-procedure-heat' /> </GridItem> @@ -202,7 +202,7 @@ const OnboardingProcedure = ({onboardingMethod, onDataChanged, genericFieldInfo} checked={onboardingMethod === onboardingMethodConst.MANUAL} isValid={genericFieldInfo.onboardingMethod.isValid} errorText={genericFieldInfo.onboardingMethod.errorText} - onChange={() => onDataChanged({onboardingMethod:'Manual'},SP_CREATION_FORM_NAME)} + onChange={() => onDataChanged({onboardingMethod: onboardingMethodConst.MANUAL},SP_CREATION_FORM_NAME)} type='radio' data-test-id='new-vsp-creation-procedure-manual' /> </GridItem> diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js index 8806ffd0bf..a13e742006 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js @@ -53,7 +53,7 @@ export const mapStateToProps = ({softwareProduct, licenseModel: {licenseAgreemen fullCategoryDisplayName }, isReadOnlyMode, - componentsList, + componentsList, isManual: currentSoftwareProduct.onboardingMethod === onboardingMethod.MANUAL }; }; @@ -65,7 +65,6 @@ const mapActionsToProps = (dispatch, {version}) => { licenseModelId, version }), - onAttachmentsSelect: ({id: softwareProductId}) => OnboardingActionHelper.navigateToSoftwareProductAttachments(dispatch, {softwareProductId, version}), onUpload: (softwareProductId, formData) => SoftwareProductActionHelper.uploadFile(dispatch, { softwareProductId, @@ -98,7 +97,7 @@ const mapActionsToProps = (dispatch, {version}) => { data: { title: i18n('Upload Failed'), confirmationButtonText: i18n('Continue'), - msg: i18n('no zip file was uploaded or zip file doesn\'t exist') + msg: i18n('no zip or csar file was uploaded or expected file doesn\'t exist') } }), onComponentSelect: ({id: softwareProductId, componentId}) => { diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx index 7ffbeda4dc..72a416473c 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx @@ -57,7 +57,6 @@ class SoftwareProductLandingPageView extends React.Component { isReadOnlyMode: React.PropTypes.bool, componentsList: React.PropTypes.arrayOf(ComponentPropType), onDetailsSelect: React.PropTypes.func, - onAttachmentsSelect: React.PropTypes.func, onUpload: React.PropTypes.func, onUploadConfirmation: React.PropTypes.func, onInvalidFileSizeUpload: React.PropTypes.func, @@ -78,15 +77,13 @@ class SoftwareProductLandingPageView extends React.Component { disableClick={true} ref='fileInput' name='fileInput' - accept='.zip' + accept='.zip, .csar' disabled> <div className='draggable-wrapper'> <div className='software-product-landing-view-top'> <div className='row'> <ProductSummary currentSoftwareProduct={currentSoftwareProduct} onDetailsSelect={onDetailsSelect} /> - {isManual ? - <div className='details-panel'/> - : this.renderProductDetails(currentSoftwareProduct, isReadOnlyMode)} + {this.renderProductDetails(isManual, isReadOnlyMode)} </div> </div> </div> @@ -106,34 +103,18 @@ class SoftwareProductLandingPageView extends React.Component { } } - renderProductDetails(currentSoftwareProduct, isReadOnlyMode) { - let {validationData} = currentSoftwareProduct; - let {onAttachmentsSelect} = this.props; - let details = { - heatTemplates: validationData ? '1' : '0', - images: '0', - otherArtifacts: '0' - }; - + renderProductDetails(isManual, isReadOnlyMode) { return ( <div className='details-panel'> - <div className='software-product-landing-view-heading-title'>{i18n('Software Product Attachments')}</div> - <div className='software-product-landing-view-top-block'> - <div - className='software-product-landing-view-top-block-col' - onClick={() => onAttachmentsSelect(currentSoftwareProduct)}> - <div> - <div className='attachment-details'>{i18n('HEAT Templates')} (<span - className='attachment-details-count'>{details.heatTemplates}</span>) - </div> - </div> + { !isManual && <div> + <div className='software-product-landing-view-heading-title'>{i18n('Software Product Attachments')}</div> + <DraggableUploadFileBox + dataTestId='upload-btn' + isReadOnlyMode={isReadOnlyMode} + className={classnames('software-product-landing-view-top-block-col-upl', {'disabled': isReadOnlyMode})} + onClick={() => this.refs.fileInput.open()}/> </div> - <DraggableUploadFileBox - dataTestId='upload-btn' - isReadOnlyMode={isReadOnlyMode} - className={classnames('software-product-landing-view-top-block-col-upl', {'disabled': isReadOnlyMode})} - onClick={() => this.refs.fileInput.open()}/> - </div> + } </div> ); } diff --git a/openecomp-ui/test/softwareProduct/attachments/SoftwareProductAttachmentsView.test.js b/openecomp-ui/test/softwareProduct/attachments/SoftwareProductAttachmentsView.test.js index 5dfe98f273..355a3162b1 100644 --- a/openecomp-ui/test/softwareProduct/attachments/SoftwareProductAttachmentsView.test.js +++ b/openecomp-ui/test/softwareProduct/attachments/SoftwareProductAttachmentsView.test.js @@ -36,13 +36,13 @@ describe('SoftwareProduct Attachments - View: ', function () { let versionControllerData = VersionControllerUtilsFactory.build(); let softwareProductAttachments = { + attachmentsDetails: {activeTab: tabsMapping.SETUP}, heatSetup: {}, heatValidation: { attachmentsTree, errorList }, - heatSetupCache: {}, - activeTab: tabsMapping.SETUP + heatSetupCache: {} }; let data = defaultStoreFactory.build({softwareProduct: {softwareProductAttachments, softwareProductEditor: {data: {...versionControllerData}}}}); var result = mapStateToProps(data); @@ -57,6 +57,7 @@ describe('SoftwareProduct Attachments - View: ', function () { let versionControllerData = VersionControllerUtilsFactory.build(); let softwareProductAttachments = { + attachmentsDetails: {}, heatSetup: {}, heatValidation: { attachmentsTree, diff --git a/sdc-os-chef/sdc-backend/Dockerfile b/sdc-os-chef/sdc-backend/Dockerfile index 7054cc10c3..9052e74b52 100644 --- a/sdc-os-chef/sdc-backend/Dockerfile +++ b/sdc-os-chef/sdc-backend/Dockerfile @@ -1,36 +1,21 @@ -FROM jetty:9.3-jre8 +FROM openecomp/base_sdc-backend:1.0.0-SNAPSHOT-latest -ARG HTTP_PROXY -ARG HTTPS_PROXY - -ENV HTTP_PROXY ${HTTP_PROXY} -ENV HTTPS_PROXY ${HTTPS_PROXY} - -RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \ - if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi +COPY chef-solo /root/chef-solo/ +COPY chef-repo/cookbooks/. /root/chef-solo/cookbooks/ -RUN apt-get -y update -RUN apt-get -y install apt-utils -RUN apt-get -y install curl -RUN apt-get -y install vim -RUN apt-get -y install jq -RUN apt-get -y install python libssl-dev libcurl4-openssl-dev python-dev gcc +#RUN python /root/chef-solo/cookbooks/sdc-normatives/files/default/get-pip.py -COPY chef-solo /root/chef-solo/ -COPY chef-repo/cookbooks/. /root/chef-solo/cookbooks/ +ADD onboarding-be-*.war ${JETTY_BASE}/webapps/ -RUN python /root/chef-solo/cookbooks/sdc-normatives/files/default/get-pip.py -RUN pip install pycurl +ADD catalog-be-*.war ${JETTY_BASE}/webapps/ -# install chef-solo -RUN curl -L https://omnitruck.chef.io/install.sh | bash +ADD api-docs.war ${JETTY_BASE}/webapps/ -ADD onboarding-be-*.war ${JETTY_BASE}/webapps/ -ADD catalog-be-*.war ${JETTY_BASE}/webapps/ -ADD api-docs.war ${JETTY_BASE}/webapps/ -RUN chown -R jetty:jetty ${JETTY_BASE}/webapps +RUN chown -R jetty:jetty ${JETTY_BASE}/webapps COPY startup.sh /root/ + RUN chmod 770 /root/startup.sh + ENTRYPOINT [ "/root/startup.sh" ] diff --git a/sdc-os-chef/sdc-cassandra/Dockerfile b/sdc-os-chef/sdc-cassandra/Dockerfile index 7af6de1de4..6066aeb453 100644 --- a/sdc-os-chef/sdc-cassandra/Dockerfile +++ b/sdc-os-chef/sdc-cassandra/Dockerfile @@ -1,30 +1,11 @@ -FROM cassandra:2.1.17 - -ARG HTTP_PROXY -ARG HTTPS_PROXY - -ENV HTTP_PROXY ${HTTP_PROXY} -ENV HTTPS_PROXY ${HTTPS_PROXY} - -RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \ - if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi - -#ENV DEBIAN_FRONTEND noninteractive -RUN apt-get -y update && apt-get -y install --no-install-recommends \ - curl \ - vim \ - apt-utils \ - openjdk-8-jdk - -RUN update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +FROM openecomp/base_sdc-cassandra:1.0.0-SNAPSHOT-latest COPY chef-solo /root/chef-solo/ -COPY chef-repo/cookbooks /root/chef-solo/cookbooks/ - -# install chef-solo -RUN curl -L https://omnitruck.chef.io/install.sh | bash +COPY chef-repo/cookbooks /root/chef-solo/cookbooks/ COPY startup.sh /root/ + RUN chmod 770 /root/startup.sh + ENTRYPOINT [ "/root/startup.sh" ] diff --git a/sdc-os-chef/sdc-elasticsearch/Dockerfile b/sdc-os-chef/sdc-elasticsearch/Dockerfile index 89516a6727..60db8e5b6b 100644 --- a/sdc-os-chef/sdc-elasticsearch/Dockerfile +++ b/sdc-os-chef/sdc-elasticsearch/Dockerfile @@ -1,27 +1,11 @@ -FROM elasticsearch:2.1.2 - -ARG HTTP_PROXY -ARG HTTPS_PROXY - -ENV HTTP_PROXY ${HTTP_PROXY} -ENV HTTPS_PROXY ${HTTPS_PROXY} - -RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \ - if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi - -RUN apt-get -y update -RUN apt-get -y install apt-utils -RUN apt-get -y install curl -RUN apt-get -y install vim -RUN mkdir -p /var/chef/nodes +FROM openecomp/base_sdc-elasticsearch:1.0.0-SNAPSHOT-latest COPY chef-solo /root/chef-solo/ -COPY chef-repo/cookbooks /root/chef-solo/cookbooks/ -# install chef-solo -RUN curl -L https://omnitruck.chef.io/install.sh | bash +COPY chef-repo/cookbooks /root/chef-solo/cookbooks/ COPY startup.sh /root/ + RUN chmod 770 /root/startup.sh ENTRYPOINT [ "/root/startup.sh" ] diff --git a/sdc-os-chef/sdc-frontend/Dockerfile b/sdc-os-chef/sdc-frontend/Dockerfile index c59d9e21da..7f9207d545 100644 --- a/sdc-os-chef/sdc-frontend/Dockerfile +++ b/sdc-os-chef/sdc-frontend/Dockerfile @@ -1,30 +1,16 @@ -FROM jetty:9.3-jre8 - -ARG HTTP_PROXY -ARG HTTPS_PROXY - -ENV HTTP_PROXY ${HTTP_PROXY} -ENV HTTPS_PROXY ${HTTPS_PROXY} - -RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \ - if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi - -RUN apt-get -y update -RUN apt-get -y install apt-utils -RUN apt-get -y install curl -RUN apt-get -y install vim +FROM openecomp/base_sdc-frontend:1.0.0-SNAPSHOT-latest COPY chef-solo /root/chef-solo/ -COPY chef-repo/cookbooks /root/chef-solo/cookbooks/ -# install chef-solo -RUN curl -L https://omnitruck.chef.io/install.sh | bash +COPY chef-repo/cookbooks /root/chef-solo/cookbooks/ RUN cp ${JETTY_HOME}/resources/log4j.properties ${JETTY_BASE}/resources/log4j.properties -ADD onboarding*.war ${JETTY_BASE}/webapps/ -ADD catalog-fe-*.war ${JETTY_BASE}/webapps/ -RUN chown -R jetty:jetty ${JETTY_BASE}/webapps +ADD onboarding*.war ${JETTY_BASE}/webapps/ + +ADD catalog-fe-*.war ${JETTY_BASE}/webapps/ + +RUN chown -R jetty:jetty ${JETTY_BASE}/webapps COPY startup.sh /root/ diff --git a/sdc-os-chef/sdc-kibana/Dockerfile b/sdc-os-chef/sdc-kibana/Dockerfile index a42225a91c..6a058def0e 100644 --- a/sdc-os-chef/sdc-kibana/Dockerfile +++ b/sdc-os-chef/sdc-kibana/Dockerfile @@ -1,23 +1,8 @@ -FROM kibana:4.3.3 - -ARG HTTP_PROXY -ARG HTTPS_PROXY - -ENV HTTP_PROXY ${HTTP_PROXY} -ENV HTTPS_PROXY ${HTTPS_PROXY} - -RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \ - if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi - -RUN apt-get -y update -RUN apt-get -y install curl -RUN apt-get -y install vim +FROM openecomp/base_sdc-kibana:1.0.0-SNAPSHOT-latest COPY chef-solo /root/chef-solo/ -COPY chef-repo/cookbooks/. /root/chef-solo/cookbooks/ -# install chef-solo -RUN curl -L https://omnitruck.chef.io/install.sh | bash +COPY chef-repo/cookbooks/. /root/chef-solo/cookbooks/ COPY startup.sh /root/ diff --git a/sdc-os-chef/sdc-sanity/Dockerfile b/sdc-os-chef/sdc-sanity/Dockerfile index 9dd829158f..ea137b401b 100644 --- a/sdc-os-chef/sdc-sanity/Dockerfile +++ b/sdc-os-chef/sdc-sanity/Dockerfile @@ -1,27 +1,11 @@ -FROM ubuntu:16.04 - -ARG HTTP_PROXY -ARG HTTPS_PROXY - -ENV HTTP_PROXY ${HTTP_PROXY} -ENV HTTPS_PROXY ${HTTPS_PROXY} - -RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \ -RUN apt-get -y update && \ - apt-get -y install --no-install-recommends apt-utils && \ - apt-get install curl \ - default-jre - openjdk-8-jdk - vim && \ - update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java - if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi +FROM openecomp/base_sdc-sanity:1.0.0-SNAPSHOT-latest COPY chef-solo /root/chef-solo/ -COPY chef-repo/cookbooks/. /root/chef-solo/cookbooks/ -# install chef-solo -RUN curl -L https://omnitruck.chef.io/install.sh | bash +COPY chef-repo/cookbooks/. /root/chef-solo/cookbooks/ COPY startup.sh /root/ + RUN chmod 770 /root/startup.sh + ENTRYPOINT [ "/root/startup.sh" ] diff --git a/utils/webseal-simulator/README.md b/utils/webseal-simulator/README.md new file mode 100644 index 0000000000..c3e04b4b22 --- /dev/null +++ b/utils/webseal-simulator/README.md @@ -0,0 +1,55 @@ +# SDC Simulator + +This options is for developers to run locally SDC +SDC Simulator is a project that enables emulation of web server that provides security policy and sign-on to the SDC component in dev environments. + + - Provides sign on to the basic user roles/functionalities + - Creation of basic user accounts + +# Docker compilation - Docker Maven Build Profile (io.fabric8 maven Plugin) + +If you are using onap vagrant you can deploy the simulator by: + +Set up the DOCKER_HOST environmental variable + +To set environmental variable in Windows (the docker engine environment): +- Run `cmd` +-- Issue command `set NAME=VAL +Example: set DOCKER_HOST=tcp://127.0.0.1:2375 +--To check if the variable set succeeded issue `echo %DOCKER_HOST%` + +- To compile sdc-simulator docker: +1. Run `mvn clean install -Ddocker.buildArg.http_proxy=<http_proxy> -Ddocker.buildArg.https_proxy=<https_proxy> -P docker` +-- The proxy arguments are passed and used as environmental variables in Dockerfiles +2. Copy the script /webseal-simulator/scripts/simulator_docker_run.sh to the docker engine environment and run: +`simulator_docker_run.sh -r 1.1-STAGING-latest` +3. Run `docker ps` to verify that sdc-simulator docker is up and running. +4. Enter to UI: `http://<ip address>:8285/login` + +# Docker compilation - Docker Engine + +1. Build web simulator WAR file: run `mvn clean install` on project “webseal simulator”. This will generate war file (WSSimulator.war) in the target folder. +2. Ftp war file: webseal-simulator/sdc-simulator folder to your localhost vagrant machine which runs docker engine daemon. +-- Check that WSSimulator.war exists after first step No.1 in webseal-simulator/sdc-simulator folder. +3. Run `docker build -t openecomp/sdc-simulator:1.1-STAGING-latest <PATH/sdc-simulator>` +Example: docker build -t openecomp/sdc-simulator:1.1-STAGING-latest /tmp/docker/sdc-simulator/ +-- If running behind a proxy: +`docker build --build-arg http_proxy=http://URL:PORT --build-arg https_proxy=http://URL:PORT -t openecomp/sdc-simulator:1.1-STAGING-latest /tmp/docker/sdc-simulator/` +4. Validate that images pushed to the local repo by executing `docker images` +5. Copy the script /webseal-simulator/scripts/simulator_docker_run.sh to the docker engine environment and run: `simulator_docker_run.sh -r 1.1-STAGING-latest` +6. Run `docker ps` to verify that sdc-simulator docker is up and running. +7. Enter to UI: `http://<ip address>:8285/login` + +# WAR compilation + + - To compile WSSimulator.war: +1. Build web simulator WAR file: run `mvn clean install` on project "webseal simulator". This will generate war file (WSSimulator.war) in the target folder. +2. Ftp war file: webseal-simulator\target\WSSimulator.war to your localhost vagrant machine: /home/vagrant/webseal-simulator/webapps folder +3. Ftp configuration file: webseal-simulator\src\main\resources\webseal.conf to your localhost vagrant machine: /home/vagrant/webseal-simulator/config +4. Add users to simulator: open configuration file - webseal.conf and add new user to the user list. + Note: You need to define the user in the SDC as well. +5. To run the simulator, enter to your local vagrant and run: startWebsealSimulator.sh +-- Restart the simulator: + Stop the simulator: stopWebsealSimulator.sh + Start the simulator: startWebsealSimulator.sh +6. Enter to UI: http://<ip address>:8285/login |